4

Mac OS 10.7.5 の Python 内で CPLEX を使用しようとしています。CPLEX は 32 ビットの Python のみをサポートしているようです。これをPythonシェルで使用して、32ビットかどうかを確認しています:

import sys,platform; print platform.architecture()[0], sys.maxsize > 2**32

man 1 python で提案されているように、これらの2つのコマンドを試しましたが、どちらも32ビットを強制していないようです:

export VERSIONER_PYTHON_PREFER_32_BIT=yes
defaults write com.apple.versioner.python Prefer-32-Bit -bool yes

うまくいくように見える唯一のものはこれです:

arch -i386 python

ただし、arch を使用して他のスクリプトを呼び出すスクリプトを実行すると、それらはすべて 64 ビット モードで起動するように見えます。強制的に 32 ビット モードにする別のシステム全体の変数はありますか?

4

3 に答える 3

6

このlipoコマンドを使用して、サポートのみの Python インタープリターのコピーを作成できますi386

:; file /usr/bin/python2.7
/usr/bin/python2.7: Mach-O universal binary with 2 architectures
/usr/bin/python2.7 (for architecture i386): Mach-O executable i386
/usr/bin/python2.7 (for architecture x86_64):   Mach-O 64-bit executable x86_64

:; lipo -thin i386 -output python-i386 /usr/bin/python2.7

:; file python-i386 
python-i386: Mach-O executable i386

:; ./python-i386
Python 2.7.2 (default, Jun 20 2012, 16:23:33) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

次に、既存のスクリプトが を呼び出すように手配するか、(トリックpython-i386を使用する場合) に名前を変更し、以前のどこかにあるディレクトリに配置します。/usr/bin/envpythonPATH/usr/bin

platform.architecture()or を見てもplatform.machine()、現在のプロセスが 32 ビットか 64 ビットかは実際にはわからないことに注意してください。それらは常に私に64ビットの答えを与えます。しかし、Activity Monitor で確認すると、ストリップされたバイナリは「(64 ビット)」とマークされていませんが、他のプロセスはマークされています。

于 2012-11-12T22:57:38.813 に答える
0

上記の提案のいくつかとhereを試してみて、膨大な量の試行錯誤を繰り返した後、次のシンボリックリンクに出くわしました。

/usr/local/bin/python2-32

を指しています:

/Library/Frameworks/Python.framework/Versions/2.7/bin/python2-32

そして、この Python を実行すると、( とは対照的に/Library/Frameworks/Python.framework/Versions/2.7/bin/python2) 32 ビット モードで起動することがわかりました。これは、アクティビティ モニターで確認できます。

注: 他の人が他の場所で指摘しているように、platform.architecture()常に良い指標とは限りません。この 32 ビット プロセスに対して「64 ビット」と表示されています。

于 2016-01-15T16:02:17.893 に答える
0

ユーザーごとまたはシステム全体でインタープリターを選択する方法については、Apple の開発者ライブラリの公式の言葉を参照してください。

システムのバージョンを設定します

% defaults write com.apple.versioner.python バージョン 2.7

デフォルトのシステム バージョンを 32 ビットに設定します

% defaults write com.apple.versioner.python Prefer-32-Bit -bool yes

特定のバージョンの使用

python コマンドを使用する代わりに、特定のバージョンを直接使用できます。たとえば、コマンド ラインから python2.7 を実行すると、Python のデフォルト バージョンが何であるかに関係なく、Python の 2.7 バージョンが実行されます。

#! で特定のバージョンの Python を使用できます。ただし、移植性と将来の互換性の問題が発生する可能性があります。

python コマンドに適用される設定ファイルと環境変数は、特定のバージョンの Python を実行している場合には適用されないことに注意してください。特に、python2.6 を実行すると、デフォルトで常に 64 ビット実行になります (arch(1) コマンドを使用して 32 ビット アーキテクチャを明確に選択しない限り)。

https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/python.1.html

于 2014-07-01T17:37:01.293 に答える