在wxPython中以32位模式运行Python
我在Mac OS X Snow Leopard上尝试以32位模式运行Python,虽然有一些成功,但遇到了一些奇怪的情况。
如果我用/usr/bin/python来运行,它似乎不想以32位模式运行;但是如果我用/usr/bin/python2.6来运行,就可以正常以32位模式运行。到目前为止,我认为/usr/bin/python和/usr/bin/python2.6是一样的。有没有人知道为什么它们在这里表现得不一样呢?
zrbecker:src$ /usr/bin/python --version
Python 2.6.1
zrbecker:src$ /usr/bin/python2.6 --version
Python 2.6.1
zrbecker:src$ arch -i386 /usr/bin/python2.6 -c 'import wx'
zrbecker:src$ arch -i386 /usr/bin/python -c 'import wx'
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/var/tmp/wxWidgets/wxWidgets-13~231/2.6/DSTROOT/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode/wx/__init__.py", line 45, in <module>
File "/var/tmp/wxWidgets/wxWidgets-13~231/2.6/DSTROOT/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode/wx/_core.py", line 4, in <module>
ImportError: /System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode/wx/_core_.so: no appropriate 64-bit architecture (see "man python" for running in 32-bit mode)
2 个回答
做法:
file /usr/bin/python /usr/bin/python2.6
ls -l /usr/bin/python /usr/bin/python2.6
你会发现它们是不同的可执行文件,而不仅仅是符号链接。
在 OS X 10.6 中,苹果提供了一种方法,可以永久选择在 OS X 中自带的 Python 2.6 是以 64 位模式还是 32 位模式运行(这个选项叫 VERSIONER_PYTHON_PREFER_32_BIT
),还有其他一些选项。想了解更多细节,可以查看 man 1 python
。/usr/bin/python
这个程序是一个前端,它会检查你选择的选项,这些选项可以通过 default
的 plist 文件或者环境变量来设置,然后它会启动你想要的解释器版本,并以你选择的模式运行,不管这个包装程序是以什么模式启动的(比如通过 arch
命令)。而 /usr/bin/python2.6
是标准 OS X pythonw 程序的一个稍微修改过的版本,它会以自己被启动时的模式来运行解释器。标准的 python.org 版本 2.6 并没有类似的代码。在更新的 Python 版本中,比如 2.7 和 3.2,pythonw 可执行文件也会遵循它被启动时的模式,所以 arch -i386
这个命令是可以正常工作的。
顺便提一下,苹果在 这里 提供了各种开源产品的源代码,包括 Python,这些都是集成在 OS X 版本中的,还有用于构建它的定制补丁。