2012-11-02 41 views
1

我最近安装了python 2.7.3(来自2.6),并在我的Mac上意外地重新安装了wxPython 2.8 unicode。现在,当我尝试导入wx时,我得到了Python“导入wx”错误

>>> import wx 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/wxPython-unicode-2.8.12.1/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.12.1/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.12.1/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.12.1/lib/python2.7/site-packages/wx-2.8-mac-unicode/wx/_core_.so: no matching architecture in universal wrapper 

这是为什么?我做了defaults write com.apple.versioner.python Prefer-32-Bit -bool yes,并且print("%x" % sys.maxsize, sys.maxsize > 2**32)仍然返回('7fffffffffffffff', True)。这是否意味着它在64位模式下运行?如果是这样,那是为什么我得到这个错误?

编辑:在python2.6中导入wx时也会发生这种情况。但没有什么应该改变,因为我有相同版本的wxPython。

另一编辑:使用arch,我确定这是因为它运行在64位模式。但是,尽管Prefer-32-Bit -bool yes是64位。为什么会这样呢?我注意到/ usr/bin/python仍然运行2.6。

回答

1

这绝对是一个架构不匹配。而不是运行Python作为32位的,尝试编译WX之前设置此environement变量:

export ARCHFLAGS='-arch x86_64' 
+0

“编译wx”是什么意思?我在Mac上,其中wx只运行在32位,因为它依赖于过时的Carbon框架,只支持32位。我从一个下载的软件包中安装了wxPython。 – tkbx

+2

啊,我现在看到了。尽管如此,建筑仍然错试试'arch -i386 python' –

+0

这很有效,但它似乎不是一个永久的解决方案。有没有办法强制Python在32位打开,而不通过另一个(拱)程序管道?像'python -32'? – tkbx

0

,如果你想运行在Mac乘坐(robotframework),我想我不得不给你同样的问题。您可以下载python版本(Mac OS X 32位i386/PPC安装程序),是的,您必须使用它来代替其他人。您可以从网上下载它:https://www.python.org/downloads/release/python-2711/.this是我的情况在mac pro中跑步