4

--arch x86_64 オプションを指定して sip をコンパイルすると、次のエラーが発生しました。

prosseek:siplib smcho$ python -c 'import sip; プリント一口」
トレースバック (最新の呼び出しが最後):
  ファイル ""、1 行目、
ImportError: dlopen(./sip.so, 2): 適切な画像が見つかりません。見つけた:
        ./sip.so: mach-o、しかし間違ったアーキテクチャ

ビルド済みの Mac OS X python (snow leopard) はユニバーサルであり、64 ビット ライブラリを取得できないことがわかりました。32ビットモードで動作していると思います。

ファイル /usr/bin/python
/usr/bin/python: 3 つのアーキテクチャを持つ Mach-O ユニバーサル バイナリ
/usr/bin/python (アーキテクチャ x86_64 用): Mach-O 64 ビット実行可能ファイル x86_64
/usr/bin/python (アーキテクチャ i386 用): Mach-O 実行可能 i386
/usr/bin/python (アーキテクチャ ppc7400 用): Mach-O 実行可能 ppc
prosseek:siplib smcho$ ファイル sip.so
sip.so: Mach-O 64 ビット バンドル x86_64

Python を強制的に 64 ビット モードで実行するにはどうすればよいですか? 同じコードを Textmate で実行しても問題ありません。とにかく、Textmate は 64 ビット モードで実行する必要があると思います。

追加した

  • このリンクは、実行している python が 32 ビットか 64 ビットかを識別する方法を示しています。そして、私のpythonが32ビットであることを確認しました。
  • このリンクは、32/64 ビット Python の作成方法を示しています。しかし、それは私にはうまくいきません。
4

2 に答える 2

6

arch(1)を使用してみて、特定のバージョンの Python を指定します。

arch -x86_64 /usr/bin/python2.6

実際には、システムは最初に適切なアーキテクチャを選択するはずです。として

$ file /usr/bin/python2.5
/usr/bin/python2.5: Mach-O universal binary with 2 architectures
/usr/bin/python2.5 (for architecture i386): Mach-O executable i386
/usr/bin/python2.5 (for architecture ppc7400):  Mach-O executable ppc

$ file /usr/bin/python2.6
/usr/bin/python2.6: Mach-O universal binary with 3 architectures
/usr/bin/python2.6 (for architecture x86_64):   Mach-O 64-bit executable x86_64
/usr/bin/python2.6 (for architecture i386): Mach-O executable i386
/usr/bin/python2.6 (for architecture ppc7400):  Mach-O executable ppc

何らかの理由pythonで 2.5 を選択した場合、64 ビットは使用できませんが、2.6 を選択した場合は、以下にコメントされているように、x86_64 バリアントが自動的に選択されます。前者の場合はpython_select、バージョンを取得して 2.6 に変更してみてください。

于 2010-07-08T19:49:04.807 に答える
1

わかりました、これを行うときは本当に注意してください。他のものも64ビットである必要があります。突然、mod_python が機能しない場合は、apache を再コンパイルする必要があります。次に、tkinter/tix などのすべての python モジュール。私のように 10.5 を使用している場合は、そこに行かずに 32 ビットで生活してください。

http://www.macports.org/を知らない場合は、それがあなたの友人であることを思い出してください。:-)

于 2010-07-08T19:57:37.413 に答える