Usando virtualenvwrapper no Eshell

7

Percebi que não posso usar comandos virtualenvwrapper (como workon) em um eshell, mas eles funcionam em um ambiente shell. Existe um modo virtualenvwrapper para o Emacs?

calizar
fonte
virtualenvwrapper(em melpa) fornece o comando venv-workonpara 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.
Ehvince

Respostas:

4

virtualenvwrapper(em melpa) fornece o comando venv-workonpara 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.

Ehvince
fonte
2

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.


fonte
Normalmente, uso meu .dir-locals.el para alternar o pyvenv por projeto. O pyvenv também possui uma configuração de rastreamento para alternar automaticamente ao alternar buffers.
Elarson