12

Mac OS10.6.4でPython2.7を実行していて、wxPython2.8-osx-unicode-2.8.11.0-universal-py2.7.dmgバイナリからwxPythonをインストールしました。import wxPythonスクリプトの行に奇妙なエラーが表示されます。参考までに、PyCrustからwxモジュールを問題なくインポートできます。私はここで私が間違ったことを本当に見ていません。誰か助けてもらえますか?

  File "prod_cons_wx.py", line 6, in <module>
    import wx 
  File "/usr/local/lib/wxPython-unicode-2.8.11.0/lib/python2.7/site-packages/wx-2.8-mac-unicode/wx/__init__.py", line 45, in <module>
    from wx._core import *
  File "/usr/local/lib/wxPython-unicode-2.8.11.0/lib/python2.7/site-packages/wx-2.8-mac-unicode/wx/_core.py", line 4, in <module>
    import _core_
ImportError: dlopen(/usr/local/lib/wxPython-unicode-2.8.11.0/lib/python2.7/site-packages/wx-2.8-mac-unicode/wx/_core_.so, 2): no suitable image found.  Did find:
    /usr/local/lib/wxPython-unicode-2.8.11.0/lib/python2.7/site-packages/wx-2.8-mac-unicode/wx/_core_.so: no matching architecture in universal wrapper
4

5 に答える 5

9

ここでwxPython2.7dmgに含まれているC拡張モジュールは32ビットのみのようです。

$ cd /usr/local/lib/wxPython-unicode-2.8.11.0/lib/python2.7/site-packages/wx-2.8-mac-unicode/wx
$ file *.so
_animate.so:   Mach-O universal binary with 2 architectures
_animate.so (for architecture ppc): Mach-O bundle ppc
_animate.so (for architecture i386):    Mach-O bundle i386
_aui.so:       Mach-O universal binary with 2 architectures
_aui.so (for architecture ppc): Mach-O bundle ppc
_aui.so (for architecture i386):    Mach-O bundle i386
...

残念ながら、platform.architecture()Pythonが実行されているOS Xマルチアーキテクチャのアーチを正確に示すことはできません。たとえば、Python2.7用の3-archpython.orgインストーラーを使用するとplatform.architecture()、32ビットモードで実行している場合でも常に64ビットが報告されます。 :

$ cd /Library/Frameworks/Python.framework/Versions/2.7
$ file python2.7
python2.7: Mach-O universal binary with 3 architectures
python2.7 (for architecture i386):  Mach-O executable i386
python2.7 (for architecture ppc7400):   Mach-O executable ppc
python2.7 (for architecture x86_64):    Mach-O 64-bit executable x86_64
$ arch -x86_64 ./python2.7 -c 'import platform, sys; print "{0}, {1:x}".format(platform.architecture()[0], sys.maxint)'
64bit, 7fffffffffffffff
$ arch -i386 ./python2.7 -c 'import platform, sys; print "{0}, {1:x}".format(platform.architecture()[0], sys.maxint)'
64bit, 7fffffff
$ arch -ppc ./python2.7 -c 'import platform, sys; print "{0}, {1:x}".format(platform.architecture()[0], sys.maxint)'
64bit, 7fffffff

信頼できる方法は、Python2sys.maxintまたはPython3を調べることですsys.maxsize

あなたはあなたの質問でPythonをどのように呼び出すかを示していません。スクリプトファイルのシバン行を介したものですか?もしそうなら、あなたはあなたが思っているPythonを実行していないかもしれません。また、インストールしたPython2.7を指定する必要はありません。たとえば、現在python.orgからPython 2.7のインストーラーが2つあります。1つは32ビットと64ビットの両方の実行をサポートし、もう1つは32ビットのみをサポートします。次のことを試してください。

$ file $(python2.7 -c 'import sys;print(sys.executable)')
/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: Mach-O universal binary with 3 architectures
/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python (for architecture i386):   Mach-O executable i386
/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python (for architecture ppc7400):    Mach-O executable ppc
/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python (for architecture x86_64): Mach-O 64-bit executable x86_64

つまり、Pythonのマルチアーチバージョンを使用している場合は、コンパイル済みのwxPythonを利用するために、Pythonを32ビットモードで強制的に実行する必要があります。

于 2010-08-31T08:50:38.347 に答える
4

'Ned Deily's'の提案を明確にするために、re:arch -i386python2.7script.pyを使用して32ビットモードで実行します。 正確なコマンドラインはarch-i386pythonpywrapspare.pyです。これにより、PyCrustを実行できるようになります(OSX 10.6.xでは32ビットモードで)。

于 2011-03-26T22:37:15.890 に答える
2

32ビットシステムには、python2.7-32とpythonw2.7-32の2つのファイルがあります。これらの2つのファイルを使用して、スクリプトを実行できます。

pythonをpython2.7-32にリンクし、pythonwをpythonw2.7-32にリンクします。私のスクリプトはすべてうまく機能しています。

あなたが試すことができます。

于 2011-06-25T10:12:59.050 に答える
1

現在、64ビットCocoaをサポートする開発リリースがhttp://downloads.sourceforge.net/wxpython/wxPython2.9-osx-2.9.4.0-cocoa-py2.7.dmgにあります:http:// www.wxpython.org/download.php#stable

それは私のために働いた。

于 2013-08-08T23:43:40.810 に答える
0

Snow Leopard OSX(10.6)シリーズにPythonをどのようにインストールしましたか?Pythonは64ビットまたは32ビット用にコンパイルされていますか。

次のことを試してください。

import platform
print platform.architecture()

バイナリ(wxpython dmg)が32ビットまたは64ビット用にコンパイルされているかどうかを確認してください。アーキテクチャと互換性のあるパッケージを探す必要がある場合や、マシンのソースからコンパイルする必要がある場合があります。

macportsを使用することをお勧めします。

  1. macport.orgからmacportsをインストールします
  2. sudo / opt / local / bin / port install python27
  3. sudo / opt / local / bin / port install python_select
  4. sudo / opt / local / python_select python27
  5. sudo / opt / local / bin / port install py27-wxpython

そしてこれはあなたのために働くはずです!

于 2010-08-31T07:53:34.290 に答える