Câu trả lời:
virtualenvwrapper
(trong melpa) đưa ra lệnh venv-workon
chuyể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.
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.
virtualenvwrapper
(trong melpa) đưa ra lệnhvenv-workon
chuyể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.