2

私のセットアップは次のとおりです:2.6.1 python(アップルのデフォルト、ユキヒョウ)、virtualenv、およびvirtualenvwrapperの使用

環境の外では、すべてが 32 ビットで実行されますが、問題ありません。しかし、新しいプロジェクトでは、必要な django 1.3 と大量の依存関係に取り組むつもりなので、virtualenv を作成しました。

mysql-python (pip 経由) が「mach -o wrong architecture」というエラーを受け取ることを除いて、すべてをうまくインストールできました。virtualenv内で「import sys; sys.maxint」を使用してpythonインタープリターをチェックしましたが、pythonは64ビットで実行されます。

「defaults write com.apple.versioner.python Prefer-32-Bit -bool yes」を介して、Pythonが32ビットで実行されるようにシステム全体を設定しました

なぜこれがvirtualenv内で起こるのか誰か知っていますか?

4

1 に答える 1

8

Prefer-32-bitAppleがOSX10.6のシステムPythonに実装するために使用した「魔法」の多くは、と/usr/bin/pythonでシンボリックリンクされた実際のPythonインタープリターを呼び出すものです。 実際のインタプリタをvirtualenvディレクトリにコピーして、処理がバイパスされるようにします。/usr/bin/python2.6/usr/bin/python2.5virtualenvbinPrefer-32-bit

32ビット演算を保証するためのオプションの中には:

  1. コマンドを使用しarchてインタープリターを呼び出します。

    $ virtualenv -p /usr/bin/python2.6 ./p
    $ ./p/bin/python -c 'import sys;print(sys.maxsize)'
    9223372036854775807
    $ arch -i386 ./p/bin/python -c 'import sys;print(sys.maxsize)'
    2147483647
    
  2. lipoユニバーサルバイナリから32ビットアーチのみを抽出するために使用します。

    $ file ./p/bin/python
    ./p/bin/python: Mach-O universal binary with 3 architectures
    ./p/bin/python (for architecture x86_64):   Mach-O 64-bit executable x86_64
    ./p/bin/python (for architecture i386): Mach-O executable i386
    ./p/bin/python (for architecture ppc7400):  Mach-O executable ppc
    $ cp ./p/bin/python ./p/bin/python-universal
    $ lipo ./p/bin/python-universal -thin i386 -output ./p/bin/python
    $ file ./p/bin/python
    ./p/bin/python: Mach-O executable i386
    $ ./p/bin/python -c 'import sys;print(sys.maxsize)'
    2147483647
    
  3. 新しい32ビットのみのPython2.6または2.7をインストールして使用します(インストーラーはpython.orgから入手できます) 。

于 2011-07-07T06:55:27.483 に答える