11

簡単な質問
virtualenv/virtualenvwrapperを使用しpythonて、特定の仮想環境にリンクされたコールにプレフィックスを追加することは可能ですか?

背景brewがインストールされ
たPython2.7を使用して複数の仮想環境が必要ですが、64ビットモードで実行されているものと32ビットモードで実行されているものがあります。

以下に、OSX開発の一般的なセットアップを示します。python呼び出しに追加したい特定のプレフィックスは、 arch -i386Pythonを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
4

1 に答える 1

6

アクティブ化スクリプトにエイリアスを追加し、使用するタイプごとにvirtualenvをアクティブ化します。

$ cd env32
$ echo "alias python='arch -i386 python'" >> bin/activate
$ source bin/activate
$ python myscript.py
于 2011-10-05T17:09:58.540 に答える