현재 Virtualenv의 이름을 표시하는 방법은 무엇입니까?


19

내가 사용하고 virtualenv, virtualenvwrapper, zsh, oh-my-zshCrunchbang에, 종결.

나는 현재의 이름을 표시하기 위해 노력하고있어 virtualenv지금과 같은를

workon example
(example)... 

나는 많은 해결책을 시도했지만 아무도 효과가없는 것 같습니다. 여기에 내 .zshrc 파일이 있습니다.이 문제를 해결하는 데 큰 도움이되지 않지만 올바른 해결책을 찾을 수 없다는 것을 알고 있습니다. Django 개발을 위해 Linux를 마지막으로 사용한 이후로 오랜 시간이 걸렸습니다.

지금은 username@crunchbang내가 사용하고있는 virtualenv를 알 수 없습니다.


프롬프트를 설정하여 현재 사용중인 가상 환경을 표시하는 방법을 묻는다고 생각합니다.
slm

@slm 예 정확히
Lynob

답변:


10

쉘의 프롬프트

virtualenv환경 내부 에는 파일이 bin/activate있습니다. 이 파일을 편집하여 프롬프트를 원하는대로 변경할 수 있습니다. 특히 파일의이 섹션 :

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

변수 PS1는 쉘 프롬프트가 표시되는 것을 제어하는 ​​특수 변수입니다. 값을 변경하면 virtualenv프롬프트 가 변경 됩니다.

PS1="(this is my prompt) "

  1. 샘플 환경을 작성하십시오.

    $ virtualenv tst-env
  2. 사용 virtualenv하는 경우 일반적으로이 파일을 소싱합니다.

    $ cd $HOME/tst-env
    
    $ source bin/activate
    (tst-env)[saml@grinchy tst-env]$ 
  3. 파일 의 변수 PS1를 위와 같이 변경하면 bin/activate내 프롬프트는 다음과 같습니다.

    $ source bin/activate
    (tst-env)

이 작업을 수행하는 방법에 대한 공식 지침은 다음과 같습니다 .


지금 시도했지만 수정하지 않았습니다
Lynob

여기 내 활성화 파일이 있습니다 pastebin.com/tZqdr1Yz
Lynob

activate파일 을 소싱하면 어떻게됩니까 ? 귀하의 파일이 저에게 효과적이었습니다.
slm

나는 출력을 보지 못하므로 어떤 일이 발생했는지 알 수 없으며 virtualenv아무것도 보지 않는 것보다 .zshrc문제가 있거나 어쩌면 문제 virtualenvwrapper입니까? 이 문제를 디버깅 할 수 있습니까? 내가 2 개 virualenv 실행 파일, 정상을 유의하시기 바랍니다 virtualenvvirtualenv-2.7이 정상이거나 않았다 virtualenv두 번 다운로드있어? 이것이 중요한 경우 virtualenv 및 virualenvwrapper를 설치 한 방법입니다sudo pip install virtualenv
Lynob

@ Fischer-방금 사용하여 두 번 확인했으며 zsh그와 함께 작동하므로 환경이 가장 가능성이 높습니다. 발행물. 당분간 2 개의 virtualenv 설정을 무시하십시오. 디버그하려면 set -x셸에서을 활성화 한 다음 source activate명령을 다시 실행하십시오. PS1=프롬프트가 설정되는 행 이 표시되어야합니다 .
slm

3

당신이 사용하는 경우 virtualenvwrapperzsh당신의 zsh을 후크의 숫자가 ~/.virtualenvs/당신이 당신의 환경을 사용자 정의하는 데 사용할 수있는 디렉토리. 여기 에 관한 약간의 정보가 있습니다. 다음 PS1을 추가하여 현재 작업 virtualenv을 쉘 프롬프트 앞에 추가 하도록 업데이트를 강제 실행할 수 있습니다 .

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

~/.virtualenvs/postactivate. 의 태그를 제거하려면 다음 deactivate을 추가하십시오.

PS1=$_OLD_VIRTUAL_PS1
builtin export PS1

~/.virtualenvs/postdeactivate

이 작업을 중단해야하는 유일한 (그럴듯한) 것은 자원 지원되는 ~/.zshrcA의 작업하는 동안virtualenv


postdeactivate 스크립트에 실수가 있다고 생각합니다. 그것은 = $ _ OLD_VIRTUAL_PS1 내장 \ 수출 PS1 PS1 읽어야합니다
그렉 Hilston

virtualenvwrapper는 이미 기본적으로이 작업을 수행합니다. virtualenvwrapper에 의해 작성된 venv에서 bin / activate 스크립트는 venv 이름을 zsh 및 bash 프롬프트에 미리 추가하는 코드를 포함합니다!
Erik Westrup

2

을 편집 할 필요는 없습니다 ~/.zshrc.

작업 virtualenvwrapper중이므로 $WORKON_HOME/post(de)activate파일에 옵션 또는 후크를 추가 할 수 있습니다.

자세한 내용을 보려면 여기를 참조 하십시오 .

위의 링크를 통해 다음 작업을 수행 할 수 있습니다.

내 경우에는 $WORKON_HOME=~/Envsvirtualenvwrapper를 설치할 때이 경로를 수정했기 때문입니다. 그렇지 않은 경우 폴더가 있어야합니다 ~/.virtualenvs.

  1. postactivate위치한 파일을 엽니 다$WORKON_HOME

  2. 다음 줄을 추가하십시오.

    PS1="$_OLD_VIRTUAL_PS1"
    _OLD_RPROMPT="$RPROMPT"
    RPROMPT="%{${fg_bold[white]}%}(env: %{${fg[green]}%}`basename \"$VIRTUAL_ENV\"`%{${fg_bold[white]}%})%{${reset_color}%} $RPROMPT"
  3. 저장하고 즐기십시오!

    다음과 같은 것을 얻을 수 있습니다 : 끝난

  4. (선택 사항) postdeactivate파일을 편집하여 다음 줄을 추가 할 수 있습니다.

    RPROMPT="$_OLD_RPROMPT"


0

방금 우분투 14.04에서 테스트했으며 동일한 문제가 발생했습니다. 이 문제를 해결하려면 .zshrc에 추가하십시오.

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

또는 이것을 터미널에서 실행하십시오.

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

Mac OS XI에서는

echo source /usr/local/bin/virtualenvwrapper.sh >> ~/.zshrc

0

사용중인 테마를 아는 경우 활성화 된 VIRTUAL_ENV 기본 이름을 검색하는 기능을 추가하여 ~ / .oh -my-zsh / themes / 에있는 * .zsh-theme 파일 의 PROMPT 변수에서 사용할 수 있습니다. 그 트릭을해야합니다!

나를 위해 그것은 기본 'oh-my-zsh'테마, 즉 구성된 'robbyrussels' 였습니다.

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)'

위의 코드를 추가하면 아래 결과가 생성됩니다.

여기에 이미지 설명을 입력하십시오

(kunkka.com) 은 방금 비활성화 한 virtualenv입니다.

테마 파일을 편집 한 후에는 .zshrc 파일을 제공하는 것을 잊지 마십시오.

-> source ~/.zshrc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.