web-dev-qa-db-ja.com

現在のVirtualenvの名前を表示するにはどうすればよいですか?

私はCrunchbangでvirtualenvvirtualenvwrapperzshoh-my-zsh、ターミネーターを使用しています。

現在のvirtualenvの名前をそのように表示しようとしています

workon example
(example)... 

私は多くの解決策を試しましたが、どれもうまくいかないようです これは私の.zshrcです ファイル、それを修正するのは大した問題ではないことを知っていますが、適切な解決策を見つけることができません。前回LinuxをDjango開発に使用して以来、長い間使用していたことを忘れていました。

現在、username@crunchbangが表示されていますが、使用しているvirtualenvがわかりません。

22
Lynob

シェルのプロンプト

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)
    

これを行う方法に関する公式の説明はここにあります

13
slm

virtualenvwrapperzshを使用している場合は、~/.virtualenvs/ディレクトリに多数のzshフックがあり、環境のカスタマイズに使用できます。 ここ はこれらに関する情報です。以下を追加することで、現在の作業virtualenvをシェルプロンプトに追加するPS1を強制的に更新できます。

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

~/.virtualenvs/postactivateへ。 deactivateを行ったときにタグを削除するには、以下を追加します。

PS1=$_OLD_VIRTUAL_PS1
builtin export PS1

~/.virtualenvs/postdeactivate

これを壊すべき唯一の(もっともらしい)ことは、virtualenvでの作業中の~/.zshrcのリソースです。

3
Tom B

_~/.zshrc_を編集する必要はありません。

virtualenvwrapperを使用しているので、$WORKON_HOME/post(de)activateファイルにオプションまたはフックを追加することができます。

詳細を確認したい場合は、 ここ を参照してください。

上記のリンクを使用すると、次に行うことができます:

私の場合、virtualenvwrapperをインストールしたときにこのパスを変更したため、_$WORKON_HOME=~/Envs_です。そうでない場合は、_~/.virtualenvs_フォルダーが必要です。

  1. _$WORKON_HOME_にあるファイルpostactivateを開きます

  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. 保存してお楽しみください!

    次のようなものが得られます: done

  4. (オプション)必要に応じて、postdeactivateファイルを編集して次の行を追加できます。

    _RPROMPT="$_OLD_RPROMPT"
    _
2

使用されているテーマがわかっている場合は、アクティブ化されたVIRTUAL_ENVベース名を取得する関数を追加して、*。zshのPrompt変数で使用できます。 〜/ .oh-my-zsh/themes /にある-themeファイル。これでうまくいくはずです。

私にとっては、デフォルトの「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)'

上記のコードを追加すると、以下の結果が生成されます。

enter image description here

(kunkka.com)は、私が非アクティブ化したvirtualenvです。

テーマファイルを編集した後は、必ず.zshrcファイルを読み込むようにしてください。

-> source ~/.zshrc
0
darkdefender27

私はubuntu 14.04でそれをテストしただけで、同じ問題がありました。これを修正するには、これを.zshrcに追加します

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

またはこれをターミナルで実行する

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

Mac OS Xでは、

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