Tips とトリック

これは virtualenv と virtualenvwrapper をさらに使い易くするためにユーザが教えてくれた tips です。あなたが共有したい tip を持っているなら、私にメールを送ってもらうか、 このブログ にコメントをください。私はこのページにその tip を追加します。

zsh プロンプト

Nat からです。

zsh を使用して、アクティブな仮想環境をスクリーンの右側に表示するために $WORKON_HOME/post(de)activate に少し追加しました。

postactivate は次になります。

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"

個人的な趣向や環境に応じて色を調整してください。

キャッシュされた $PATH エントリを更新する

Nat からです。

さらに zsh は新たなパスをすぐに取得しない問題があったので $WORKON_HOME/postactivate$WORKON_HOME/postdeactivate へコマンド ‘rehash’ も追加しました。

pip の virtualenv サポート

http://becomingguru.com/ からです。

virtualenvwrapper として virtualenvs のために pip が同じディレクトリを使用するようにログインシェルに次の内容を追加してください。

export PIP_VIRTUALENV_BASE=$WORKON_HOME

さらに Nat からです。

becomingguru が指摘したことに加えて次の行がキーになります。

export PIP_RESPECT_VIRTUALENV=true

それは -E パラメータを pip へ渡さずに pip がアクティブな仮想環境を検出してインストールします。

プロジェクトのワークディレクトリを作成する

James からです。

私は postmkvirtualenv スクリプトでプロジェクト名に基づいてディレクトリを作成して、 Python パスへそのディレクトリを追加してからそこへ移動します。

proj_name=$(echo $VIRTUAL_ENV|awk -F'/' '{print $NF}')
mkdir $HOME/projects/$proj_name
add2virtualenv $HOME/projects/$proj_name
cd $HOME/projects/$proj_name

私は postactivate スクリプトで workon コマンドを使用するときに自動的にプロジェクトディレクトリへ移動するようにセットします。

proj_name=$(echo $VIRTUAL_ENV|awk -F'/' '{print $NF}')
cd ~/projects/$proj_name

ディレクトリへ移動したときに自動的に workon を実行する

cd を実行する毎にそのディレクトリでシェル環境を調べるように追加したコードを Justin Lily が投稿しました.venv ファイルを見つけたら、そのファイルに含まれる環境の名前でアクティブ化します。そのディレクトリから移動すると、カレントの仮想環境は自動的に非アクティブ化します。

Harry Marrgit リポジトリ で動作するよく似た機能を書きました。

新しい環境に共通ツールを自動的にインストールする

rizumu からです。

私はこの postmkvirtualenv を基本的なセットアップを行うインストールに使用します。

$ cat postmkvirtualenv
#!/usr/bin/env bash
curl -O http://python-distribute.org/distribute_setup.p... />python distribute_setup.py
rm distribute_setup.py
easy_install pip==dev
pip install Mercurial

それから、私の開発ツールと共に pip の要求ファイルを持ちます。

$ cat developer_requirements.txt
ipdb
ipython
pastescript
nose
http://douglatornell.ca/software/python/Nosy-1.0.tar.gz
coverage
sphinx
grin
pyflakes
pep8

それぞれのプロジェクトは PIL, psycopg2, django-apps, numpy といったその独自の pip 要求ファイルを持ちます。

cd のデフォルトの振る舞いを変更する

mae からです。

これは workon の後で実行することになる postactivate フックです。venv ルートへ移動する ~cd で移動する代わりに VENV を知っているように cd を基本的に上書きします。IMO はとても扱い易くて、もうそれなしでは生きていけません。適切なパスが渡されると正常に移動します。

cd () {
    if (( $# == 0 ))
    then
        builtin cd $VIRTUAL_ENV
    else
        builtin cd "$@"
    fi
}

cd