Usando virtualenvwrapper en Eshell

7

Noté que no puedo usar los comandos virtualenvwrapper (como workon) en un eshell, pero funcionan dentro de un entorno de shell. ¿Hay un modo virtualenvwrapper-like para Emacs?

calizar
fuente
virtualenvwrapper(en melpa) da el comando venv-workonpara cambiar el entorno, pero también para todas las sesiones de emacs. wikemacs.org/index.php/Python#See_also Sin embargo, pyvenv parece más completo.
Ehvince

Respuestas:

4

virtualenvwrapper(en melpa) da el comando venv-workonpara cambiar el entorno, pero también para todas las sesiones de emacs. Funciona con eshell con venv-initialize-eshell:

El soporte para eshell se activa llamando a venv-initialize-eshell. Después de hacer esto, los nuevos shells que inicie estarán en el virtualenv correcto y tendrán acceso a los ejecutables instalados, etc. El modo también proporciona una variedad de comandos virtualenvwrapper que funcionan de manera idéntica a sus contrapartes bash / zsh (descritos en detalle a continuación). Tenga en cuenta que, a diferencia de cómo funcionan los shells interactivos, Eshell comparte un entorno con Emacs, por lo que si activa o desactiva uno, el otro también se ve afectado. Tenga en cuenta que esto requiere que la variable eshell-modify-global-environment esté establecida en verdadero. Ejecutar venv-initialize-eshell hace que esto ocurra. Si esto no funciona para usted, ¡abra un problema! Es técnicamente posible separar los dos, pero requiere un poco de pirateo con los diferentes espacios de nombres que gané '

y al modificar la solicitud de eshell:

Personalización rápida de Eshell

También es posible que desee que aparezca el nombre de su virtualenv actual en el indicador de comandos de eshell. Puede hacerlo mediante un mecanismo bastante similar, solo incluya venv-current-name en su función eshell-prompt-en alguna parte. Aquí hay un ejemplo simple de una solicitud que incluye el nombre virtualenv actual seguido de un signo de dólar:

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

Asegúrese de ajustar también su eshell-prompt-regexp si hace esto.

Más información sobre la personalización de la solicitud de eshell en EmacsWiki.

Funciona con (e) proyectiles, tiene activación automática, se muestra en la línea de modo.

Me interesaría saber las diferencias entre pyvenv y it.

Ehvince
fuente
2

pyvenv te permite usar un virtualenv desde dentro de Emacs. Sin embargo, tenga en cuenta que debido a algunas limitaciones de Emacs, este paquete cambia toda su sesión de Emacs a un virtualenv específico. Si no recuerdo mal, no es posible cambiar solo un buffer a un virtualenv.


fuente
Normalmente uso mi .dir-locals.el para cambiar el pyvenv por proyecto. pyvenv también tiene una configuración de seguimiento para cambiar automáticamente al cambiar de búfer.
elarson el