在wxPython中以32位模式运行Python

1 投票
2 回答
5843 浏览
提问于 2025-04-16 09:49

我在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 个回答

0

做法:

file /usr/bin/python /usr/bin/python2.6
ls -l /usr/bin/python /usr/bin/python2.6

你会发现它们是不同的可执行文件,而不仅仅是符号链接。

4

在 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 版本中的,还有用于构建它的定制补丁。

撰写回答