簡単な質問
virtualenv/virtualenvwrapperを使用しpython
て、特定の仮想環境にリンクされたコールにプレフィックスを追加することは可能ですか?
背景brewがインストールされ
たPython2.7を使用して複数の仮想環境が必要ですが、64ビットモードで実行されているものと32ビットモードで実行されているものがあります。
以下に、OSX開発の一般的なセットアップを示します。python
呼び出しに追加したい特定のプレフィックスは、 arch -i386
Pythonを32ビットモードとして実行するように強制することです。ここでも、最も重要な部分は、呼び出し後にのみworkon env32
追加されることです(例を参照)。.bash_profileでエイリアスを設定できることはわかっていますが、仮想環境を作成/削除するたびにこれを変更する必要があります。
編集
単純なエイリアスの使用に関する問題について詳しく説明するために、1つ以上の32ビット仮想環境が存在する可能性があります。そうは言っても、toの呼び出しは、workon
理想的には呼び出しにプレフィックスを追加するpython
ので、ターミナルでのワークフローは同じになります。呼び出した後の意味は、workon env_x_32
私はただ使用することができ、python
ターミナルarch -i386
を使用するときは私には透過的です。
Pythonのインストール:
> brew install python --framework --universal
仮想環境の作成(pip、virtualenv、virtualenvwrapperをインストールした後):
> mkvirtualenv env_1_64 --no-site-packages
> mkvirtualenv env_1_32 --no-site-packages
> mkvirtualenv env_2_64 --no-site-packages
> mkvirtualenv env_2_32 --no-site-packages
64ビットの使用法:
> workon env_1_64
> python myscript.py
> workon env_2_64
> python my_other_project_script.py
32ビットの使用法:(現在/非理想的)
> workon env_1_32
> arch -i386 python myscript.py
> workon env_2_32
> arch -i386 python my_other_project_script.py
32ビットの使用法:(理想的)
> workon env_1_32
> python my_32bit_project.py # Note that the arch -i386 would be transparent
ショーンのコメント
で実行されているソリューション:
32ビットとして実行したい環境のアクティブ化/非アクティブ化の中にエイリアスを追加しました。詳細については、以下を参照してください。
env_1_32:スクリプトをアクティブ化
# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly
deactivate () {
alias python='python' # <---- Added this line
# reset old environment variables
if [ -n "$_OLD_VIRTUAL_PATH" ] ; then
PATH="$_OLD_VIRTUAL_PATH"
export PATH
unset _OLD_VIRTUAL_PATH
fi
# ****** Removed Content to keep the post shorter*********
}
# unset irrelavent variables
deactivate nondestructive
VIRTUAL_ENV="/Users/Adam/.envs/env_1_32"
export VIRTUAL_ENV
# This should detect bash and zsh, which have a hash command that must
# be called to get it to forget past commands. Without forgetting
# past commands the $PATH changes we made may not be respected
if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
hash -r
fi
# ****** Removed Content to keep the post shorter*********
alias python='arch -i386 python' # <---- Added this line to run as 32bit