나는 Crunchbang에서 virtualenv
,,,,, 터미네이터 virtualenvwrapper
를 사용합니다 .zsh
oh-my-zsh
virtualenv
현재 이름을 이렇게 표시하려고 합니다.
workon example
(example)...
많은 솔루션을 시도했지만 아무 것도 작동하지 않는 것 같습니다.이것은 내 .zshrc입니다.파일을 수정하는 것이 큰 문제가 아니라는 것을 알고 있지만 올바른 해결책을 찾을 수 없습니다. Django 개발을 위해 Linux를 마지막으로 사용한 지 오래되어 이전에 무엇을 했는지 잊어버렸습니다.
이제 이해합니다 username@crunchbang
. 어떤 virtualenv를 사용하고 있는지 모르겠습니다.
답변1
쉘 프롬프트
귀하의 환경에 virtualenv
파일이 있습니다 bin/activate
. 이 파일을 편집하여 프롬프트를 원하는 대로 변경할 수 있습니다. 특히 파일의 이 부분은 다음과 같습니다.
...
else
PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
fi
...
이 변수는 PS1
쉘 프롬프트의 모양을 제어하는 특수 변수입니다. 값을 변경하면 virtualenv
프롬프트가 변경됩니다.
PS1="(this is my prompt) "
예
샘플 환경을 만듭니다.
$ virtualenv tst-env
virtualenv
이 파일은 일반적 으로 .$ cd $HOME/tst-env $ source bin/activate (tst-env)[saml@grinchy tst-env]$
PS1
파일의 변수를 위와 같이 변경한 후bin/activate
프롬프트는 이제 다음과 같습니다.$ source bin/activate (tst-env)
답변2
를 사용하고 virtualenvwrapper
있고 디렉토리 zsh
에 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
이를 깨뜨려야 하는 유일한 (합리적으로 보이는) 것은 ~/.zshrc
직장에서의 자원 할당 입니다.virtualenv
답변3
을 편집할 필요는 없습니다 ~/.zshrc
.
사용하고 있기 때문에 파일 virtualenvwrapper
에 $WORKON_HOME/post(de)activate
옵션이나 후크를 추가 할 수 있습니다.
더 자세히 보고 싶으시면 문의주세요여기.
위의 링크를 통해 다음 작업을 수행할 수 있습니다.
제 경우에는 $WORKON_HOME=~/Envs
virtualenvwrapper를 설치할 때 이 경로를 수정했기 때문에 그렇지 않은 경우에는 해당 폴더가 있어야 합니다 ~/.virtualenvs
.
postactivate
다음 위치에 있는 파일을 엽니다.$WORKON_HOME
다음 줄을 추가하세요.
PS1="$_OLD_VIRTUAL_PS1" _OLD_RPROMPT="$RPROMPT" RPROMPT="%{${fg_bold[white]}%}(env: %{${fg[green]}%}`basename \"$VIRTUAL_ENV\"`%{${fg_bold[white]}%})%{${reset_color}%} $RPROMPT"
저장하고 즐기세요!
(선택 사항) 원하는 경우
postdeactivate
파일을 편집하여 다음 줄을 추가할 수 있습니다.RPROMPT="$_OLD_RPROMPT"
답변4
[이 답변은 질문에 대한 답변과 약간 다를 수 있지만(적어도 부분적으로 그렇게 하려고 노력하지만), 존재한다는 것을 알고 있는 venv
(그리고 존재하지 않는 virtualenv
) 답변을 검색하는 동안 이 문제에 대한 해결책을 찾았습니다. 정확한 세부 사항(즉, --prompt
두 명령 모두에서 지원되는 옵션) 이 기억나지 않습니다 . 내가 첫 번째가 될지 의심스럽습니다. 그러니 거기까지 가세요. ]
virtualenv/기본 답변:
첫째, 핵심 질문에 대한 기본적인 대답은 다음과 같습니다.필요변경 사항이 신속하게 적용되도록 하려면 환경을 만들고, activate
소스에서 실행하고(workon이 이를 효과적으로 수행해야 함), 설치 문서(아래에서 더 자세히 설명)를 따르는 것 외에는 아무것도 하지 마십시오.virtualenv 문서:
$ workon
$ mkvirtualenv mynewenv
New python executable in mynewenv/bin/python
Installing setuptools.............................................
..................................................................
..................................................................
done.
(mynewenv)$
workon example
이 동작은 위의 질문 텍스트에서와 마찬가지로 제가 기대하는 것과 정확히 같습니다 ( (example)$
대신 프롬프트가 표시되지 않는 한 (mynewenv)$
).
이 내용을 인식하지 못하셨다면 올바른 설정 단계를 모두 따르도록 하겠습니다 virtualenv
. 귀하의 설정 중 하나를 변경해야 할 가능성은 상대적으로 낮습니다..zshrc
[참고: 귀하의 링크는 이제 작동하지 않습니다.]— 원문에 따르지 않는 한설치 참고 사항, 다음을 추가하는 것이 좋습니다(또는 거기에 나열된 지연 로딩 대안):
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh
이름이 프롬프트 등의 다른 위치에 표시되기를 원하지 않는 한(이 경우 답변을 찾을 수 있음) 다른 것은 없어야 합니다.이 문제효과가있다).
즉, 단순히 환경 이름을 지정하는 문제도 있는데, 이는 환경이 저장되는 폴더의 이름을 지정하여 수행할 수 있습니다. 예:
virtualenv example
또는 다른 이름으로 환경을 생성할 때 힌트를 지정하면 됩니다. 예를 들면 다음과 같습니다.
virtualenv env --prompt example
(후자는 이라는 디렉터리에 파일을 생성 ./env
하지만 활성화 시 프롬프트는 로 시작됩니다 (example)
.)
Venv와 함께 :
(내가 이 글을 쓰는 동안) 현대의 Python 환경에서는 venv
(설치된) 대신 Ships-with-Python을 사용하는 pip
것이 상당히 일반적입니다 . virtualenv
(비록 virtualenv
이를 사용하는 옹호자와 이유가 여전히 있지만 - 제가 올바르게 이해한다면 venv
기본적으로는 단순한 구성 요소입니다. 에서 찾을 수 없는 추가 기능과 기타 개선 사항이 virtualenv
포함된 후자 버전 ) 및 와 마찬가지로 위의 마지막 두 명령에 해당하는 명령은 다음과 같습니다.venv
venv
python3 -m venv example
... 또는...
python3 -m venv env --prompt example
...각기.
이것이 (누군가에게) 유용하길 바랍니다!