Como exibir o nome do Virtualenv atual?

16

Estou usando virtualenv , virtualenvwrapper , zsh , oh-my-zsh , terminator, no Crunchbang.

Estou tentando exibir o nome do atual virtualenv , assim como

workon example
(example)... 

Eu tentei muitas soluções, nenhuma parece funcionar, aqui está meu arquivo .zshrc , eu sei que não é grande coisa para consertá-lo, mas Não consigo encontrar a solução certa. Já faz muito tempo desde a última vez que usei o desenvolvimento do Linux para Django, esqueci o que costumava fazer.

Neste momento, vejo username@crunchbang , não sei dizer qual virtualenv estou usando.

    
por Lynob 16.08.2013 / 22:31

5 respostas

8

prompt da Shell

Dentro do seu ambiente virtualenv está um arquivo, bin/activate . Você pode editar este arquivo para alterar seu prompt para o que você quiser. Especificamente, esta seção do arquivo:

...
else
    PS1="('basename \"$VIRTUAL_ENV\"')$PS1"
fi
...

A variável PS1 é uma variável especial que controla como será o prompt de um shell. Alterar seu valor mudará seu prompt virtualenv :

PS1="(this is my prompt) "

Exemplo

  1. Crie um ambiente de amostra.

    $ virtualenv tst-env
    
  2. Quando você está usando virtualenv , normalmente você compra esse arquivo.

    $ cd $HOME/tst-env
    
    $ source bin/activate
    (tst-env)[saml@grinchy tst-env]$ 
    
  3. Depois de fazer a alteração acima para a variável PS1 no arquivo bin/activate , meu prompt agora é este:

    $ source bin/activate
    (tst-env)
    

Estas são as instruções oficiais sobre como fazer isso .

    
por 17.08.2013 / 02:27
4

Se você estiver usando virtualenvwrapper e zsh , há vários zsh hooks no diretório ~/.virtualenvs/ que você pode usar para personalizar seus ambientes. Aqui é um pouco de informação sobre estes. Você pode forçar uma atualização para PS1 que irá preceder o atual trabalho virtualenv ao seu prompt de shell adicionando:

_OLD_VIRTUAL_PS1=$PS1
PS1="('basename \"$VIRTUAL_ENV\"') $PS1"
builtin \export PS1

para ~/.virtualenvs/postactivate . Para remover a tag quando você deactivate , adicione:

PS1=$_OLD_VIRTUAL_PS1
builtin export PS1

para ~/.virtualenvs/postdeactivate

A única coisa (plausível) que deve quebrar isso é alocar ~/.zshrc ao trabalhar em virtualenv

Espero que isso ajude alguém

    
por 11.08.2016 / 20:50
2

Você não precisa editar seu ~/.zshrc .

Como você está trabalhando com virtualenvwrapper , é possível adicionar opções ou ganchos a $WORKON_HOME/post(de)activate files.

Se você quiser ver mais detalhes, consulte aqui .

O link acima permite-me fazer o seguinte:

No meu caso, $WORKON_HOME=~/Envs , porque modifiquei este caminho quando instalei o virtualenvwrapper; se você não tiver, você deve ter a pasta ~/.virtualenvs .

  1. Abra o arquivo postactivate localizado em $WORKON_HOME

  2. Adicione estas linhas:

    PS1="$_OLD_VIRTUAL_PS1"
    _OLD_RPROMPT="$RPROMPT"
    RPROMPT="%{${fg_bold[white]}%}(env: %{${fg[green]}%}'basename \"$VIRTUAL_ENV\"'%{${fg_bold[white]}%})%{${reset_color}%} $RPROMPT"
    
  3. Economize e divirta-se!

    Você obterá algo assim:

  4. (OPCIONAL) Se você quiser, pode editar o arquivo postdeactivate para adicionar esta linha:

    RPROMPT="$_OLD_RPROMPT"
    
por 08.12.2016 / 21:52
0

Eu apenas testei no Ubuntu 14.04 e tive o mesmo problema. Para consertar adicione isto ao seu .zshrc

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

ou execute isso no terminal

echo source /usr/share/virtualenvwrapper/virtualenvwrapper.sh >> ~/.zshrc

No Mac OS X eu tive que fazer

echo source /usr/local/bin/virtualenvwrapper.sh >> ~/.zshrc
    
por 09.12.2015 / 19:19
0

Se você conhece o tema que está sendo usado, você pode adicionar uma função para recuperar o nome base VIRTUAL_ENV ativado e usá-lo na variável PROMPT no *. zsh-theme arquivo localizado em ~ / .oh-my-zsh / themes / e que deve fazer o truque!

Para mim, foi o tema padrão 'oh-my-zsh', ou seja, 'robbyrussels' que foi configurado.

function virtualenv_info {
    [ $VIRTUAL_ENV ] && echo '(''basename $VIRTUAL_ENV'') '
}

local ret_status="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )"
PROMPT='${ret_status} $(virtualenv_info) %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)'

Adicionando o código acima gerado o resultado abaixo:

(kunkka.com) é o virtualenv que acabei de desativar.

Depois de editar o arquivo de tema, não esqueça de criar o arquivo .zshrc.

-> source ~/.zshrc
    
por 18.11.2016 / 21:19