私は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
...それぞれ。
これが(誰かに)役に立つことを願っています!