virtualenv/기본 답변:

virtualenv/기본 답변:

나는 Crunchbang에서 virtualenv,,,,, 터미네이터 virtualenvwrapper를 사용합니다 .zshoh-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) "

  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)
    

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

답변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=~/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"
    

답변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포함된 후자 버전 ) 및 와 마찬가지로 위의 마지막 두 명령에 해당하는 명령은 다음과 같습니다.venvvenv

python3 -m venv example

... 또는...

python3 -m venv env --prompt example

...각기.

이것이 (누군가에게) 유용하길 바랍니다!

관련 정보