Respostas:
virtualenvwrapper
(em melpa) fornece o comando venv-workon
para alternar ambiente, mas também para todas as sessões do emacs. Trabalha com eshell com venv-initialize-eshell
:
o suporte ao eshell é ativado chamando venv-initialize-eshell. Depois de fazer isso, quaisquer novos eshells iniciados estarão no virtualenv correto e terão acesso aos executáveis instalados, etc. O modo também fornece uma variedade de comandos virtualenvwrapper que funcionam de forma idêntica aos seus homólogos do bash / zsh (descritos em detalhes abaixo). Observe que, ao contrário de como os shells interativos funcionam, o Eshell compartilha um ambiente com o Emacs; portanto, se você ativar ou desativar um, o outro também será afetado. Observe que isso requer que a variável eshell-modify-global-environment seja configurada como true. A execução de venv-initialize-eshell faz com que isso ocorra. Se isso não funcionar, abra um problema! É tecnicamente possível separar os dois, mas isso requer alguns hackers com os diferentes namespaces que eu ganhei '
e ao modificar o prompt do eshell:
Customização do prompt do Eshell
Você também pode querer que o nome do seu virtualenv atual apareça no prompt do eshell. Você pode fazer isso por um mecanismo bastante semelhante, basta incluir venv-current-name em sua função eshell-prompt-Algures. Aqui está um exemplo simples de um prompt que inclui o nome virtualenv atual seguido por um cifrão:
(setq eshell-prompt-function (lambda () (concat venv-current-name "$"))))
Certifique-se de ajustar também seu eshell-prompt-regexp se fizer isso.
Mais sobre como personalizar o prompt eshell no EmacsWiki.
Funciona com (e) conchas, possui ativação automática, é exibido na linha de modo.
Eu estaria interessado em saber as diferenças entre ele e pyvenv.
pyvenv permite que você use um virtualenv no Emacs. Observe, no entanto, que devido a algumas limitações do Emacs, este pacote alterna toda a sessão do Emacs para um virtualenv específico. Se bem me lembro, não é possível alternar apenas um buffer para um virtualenv.
virtualenvwrapper
(em melpa) fornece o comandovenv-workon
para alternar ambiente, mas também para todas as sessões do emacs. wikemacs.org/index.php/Python#See_also No entanto, o pyvenv parece mais completo.