Sử dụng virtualenvwrapper trong Eshell


7

Tôi nhận thấy rằng tôi không thể sử dụng các lệnh virtualenvwrapper (như workon) trong một eshell nhưng chúng hoạt động trong môi trường shell. Có chế độ giống như virtualenvwrapper cho Emacs không?


virtualenvwrapper(trong melpa) đưa ra lệnh venv-workonchuyển đổi môi trường, nhưng đối với tất cả các phiên emacs cũng vậy. wikemacs.org/index.php/Python#See_also Tuy nhiên pyvenv có vẻ hoàn thiện hơn.
Ehvince

Câu trả lời:


4

virtualenvwrapper(trong melpa) đưa ra lệnh venv-workonchuyển đổi môi trường, nhưng đối với tất cả các phiên emacs cũng vậy. Nó hoạt động với eshell với venv-initialize-eshell:

hỗ trợ cho eshell được bật bằng cách gọi venv-initize-eshell. Sau khi thực hiện việc này, bất kỳ eshells mới nào bạn khởi chạy sẽ nằm trong virtualenv chính xác và có quyền truy cập vào các tệp thực thi được cài đặt, v.v. Chế độ cũng cung cấp nhiều lệnh virtualenvwrapper hoạt động giống hệt với các đối tác bash / zsh của chúng (được mô tả chi tiết bên dưới). Lưu ý rằng trái ngược với cách các vỏ tương tác hoạt động, Eshell chia sẻ môi trường với Emacs, vì vậy nếu bạn kích hoạt hoặc hủy kích hoạt trong một, thì cái kia cũng bị ảnh hưởng. Lưu ý rằng điều này đòi hỏi biến môi trường eshell-Sửa đổi-toàn cầu phải được đặt thành đúng. Chạy venv-initize-eshell khiến điều này xảy ra. Nếu điều này không làm việc cho bạn, hãy mở một vấn đề! Về mặt kỹ thuật có thể tách hai người, nhưng nó đòi hỏi một số hack xung quanh với các không gian tên khác nhau mà tôi đã giành được '

và về việc sửa đổi dấu nhắc eshell:

Tùy chỉnh nhắc nhở Eshell

Bạn cũng có thể muốn tên của virtualenv hiện tại của mình xuất hiện trên dấu nhắc eshell. Bạn có thể làm điều này bằng một cơ chế khá giống nhau, chỉ cần bao gồm tên venv trong tên eshell-prompt-function của bạn ở đâu đó. Dưới đây là một ví dụ đơn giản về lời nhắc bao gồm tên virtualenv hiện tại theo sau là ký hiệu đô la:

(setq eshell-prompt-function (lambda () (concat venv-current-name "$")))

Hãy chắc chắn rằng bạn cũng điều chỉnh eshell-prompt-regrec nếu bạn làm điều này.

Tìm hiểu thêm về việc tùy chỉnh lời nhắc eshell trên EmacsWiki.

Hoạt động với (e) shell, có kích hoạt tự động, hiển thị trong dòng chế độ.

Tôi sẽ quan tâm để biết sự khác biệt betwwen nó và pyvenv.


2

pyvenv cho phép bạn sử dụng virtualenv từ bên trong Emacs. Tuy nhiên, xin lưu ý rằng do một số hạn chế của Emacs, gói này chuyển toàn bộ phiên Emacs của bạn sang một virtualenv cụ thể. Nếu tôi nhớ chính xác, không thể chuyển chỉ một bộ đệm sang virtualenv.


Tôi thường sử dụng .dir-locals.el của mình để chuyển đổi pyvenv cho mỗi dự án. pyvenv cũng có cài đặt theo dõi để tự động chuyển khi chuyển bộ đệm.
elarson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.