現在のVirtualenvの名前を表示する方法は?


19

私が使用していますvirtualenvvirtualenvwrapperzshoh-my-zshCrunchbangに、ターミネータを、。

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

workon example
(example)... 

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

今、私が見ているusername@crunchbang、私はどのvirtualenvを使用しているかわかりません。


あなたがどのvirtualenvにいるかを示すようにプロンプ​​トを設定する方法を尋ねていると思いますか?
slm

@slmはい正確に
リノブ

回答:


10

シェルのプロンプト

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)

これを行う方法の公式の指示はここにあります


今すぐ試してみましたが、修正しませんでした
リノブ

ここに私のアクティブ化ファイルのpastebin.com/tZqdr1Yz
Lynob

activateファイルを入手するとどうなりますか?あなたのファイルは私のためにうまくいきました。
slm

出力が表示されないので、何が起こるかvirtualenvわかりませんが、それ以外は機能していません。何も表示されません。おそらく.zshrc問題virtualenvwrapperですか?この問題はデバッグできますか?私は2つのvirualenv実行可能ファイル、通常のを持って注意してくださいvirtualenvvirtualenv-2.7、これは正常ですかなかったvirtualenv二回ダウンロードされてしまいましたか?そして、これが重要な場合にvirtualenvとvirualenvwrapperをインストールする方法ですsudo pip install virtualenv
-Lynob

@Fischer-私はそれを使用zshしてダブルチェックしただけで、それでも動作するので、これはおそらく環境です。問題。当分の間、2つのvirtualenvのセットアップを無視しましょう。デバッグするset -xには、シェルでを有効にしてから、source activateコマンドを再実行します。PS1=プロンプトが設定されている行が表示されます。
slm

3

使用virtualenvwrapperしてzshいて、~/.virtualenvs/ディレクトリに多数のzshフックがあり、それらを使用して環境をカスタマイズできる場合。ここではこれらに関する情報のビットがあります。以下を追加することにより、シェルプロンプトに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


ポストアクティベートスクリプトに間違いがあると思います。PS1 = $ _ OLD_VIRTUAL_PS1 builtin \ export PS1を読み取る必要があります
グレッグヒルストン

現在、virtualenvwrapperはデフォルトでこれをすでに実行しています。virtualenvwrapperによって作成されたvenvのbin / activateスクリプトには、vensh名をzshとbashの両方のプロンプトに追加するコードが含まれています!
エリックウェストラップ

2

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

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

詳細については、こちらをご覧ください。

上記のリンクを使用すると、次のことができます。

私の場合$WORKON_HOME=~/Envs、virtualenvwrapperのインストール時にこのパスを変更したためです。持っていない場合は、フォルダが必要~/.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"

これはからコピーしているように見える公式ドキュメント
トム・ヘイル

0

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

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

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

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

Mac OS XIでは

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

0

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

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

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

ここに画像の説明を入力してください

(kunkka.com)は、先ほど無効にしたvirtualenvです。

テーマファイルを編集した後、.zshrcファイルのソースを忘れないでください。

-> source ~/.zshrc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.