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

...それぞれ。

これが(誰かに)役に立つことを願っています!

関連情報