我试图在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)
答案 0 :(得分:4)
在OS X 10.6中,Apple提供了一种方法永久选择OS X中提供的Python 2.6是以64位模式还是32位模式(VERSIONER_PYTHON_PREFER_32_BIT
)运行选项。有关详细信息,请参阅man 1 python
。 /usr/bin/python
程序是该程序的前端,检查所选选项,由default
plists或环境变量设置,并在所选模式下生成所需的解释器版本,无论模式如何包装器程序在(例如通过arch
)中启动。 /usr/bin/python2.6
是标准OS X pythonw程序的略微修改版本,它以其自身启动的模式启动解释器.2.6的标准python.org发行版没有类似的代码。在较新版本的Python,2.7和3.2中,pythonw可执行文件也遵循它所启动的模式,因此arch -i386
将起作用。
顺便说一下,Apple提供了here各种开源产品的来源,包括Python,并入OS X版本以及用于构建它的自定义补丁。
答案 1 :(得分:0)
执行:
file /usr/bin/python /usr/bin/python2.6
ls -l /usr/bin/python /usr/bin/python2.6
你会发现它们是不同的可执行文件,而不仅仅是符号链接。