7

私はサードパーティのライブラリ(Xeroxの有限状態ツールへのインターフェイス)を持っています。これは、内部に2つのバリアント(PPCとi386バリアント)を持つユニバーサルバイナリとして提供されます。ライブラリへのPythonインターフェースもあります(ctypesを使用します)。

しかし、Pythonインターフェースで提供されているサンプルコードを実行しようとすると、ライブラリが間違ったアーキテクチャであるというエラーが発生します。

ImportError:dlopen(/Users/arne/sw/lib/libxcfsm.dylib、10):適切な画像が見つかりません。見つかりました:
/Users/arne/sw/lib/libxcfsm.dylib:mach-o、しかし間違ったアーキテクチャ

私が収集できることから、これは、Python実行可能ファイルが私のライブラリの2つのバージョンに加えて内部的にx86_64バリアントを持っており、そのモードで実行することを好むためです。一部のスクリプトについて、Python実行可能ファイルにx86_64バージョンではなくi386バージョンを開始させる方法はありますか?

4

2 に答える 2

18

Apple システムの python (Snow Leopard 上) を使用している場合は、次のコマンドで実行できます。

arch -i386 python

例えば:

robin-mbp:~ $ arch -i386 /usr/bin/python2.6 -c "import sys; print sys.maxint"
2147483647

インタプリタを 32 ビットモードで起動します。システム python (VERSIONER_PYTHON_PREFER_32_BIT) に設定できる環境変数もあります。

独自にビルドした python の場合、現時点ではアーキテクチャの選択にバグがありますが、このチケットの pythonw.c で再ビルドすると問題なく動作します。

于 2009-10-31T16:28:24.013 に答える
3

システムの python を使用していない場合は、次の行を に追加できます~/.bash_profile

export VERSIONER_PYTHON_PREFER_32_BIT=yes
于 2011-10-14T20:13:11.243 に答える