在使用--arch x86_64选项编译sip时,我遇到了以下错误。
prosseek:siplib smcho$ python -c 'import sip; print sip' Traceback (most recent call last): File "", line 1, in ImportError: dlopen(./sip.so, 2): no suitable image found. Did find: ./sip.so: mach-o, but wrong architecture
我发现预编译的Mac OS X python(snow leopard)是通用的,并且没有获取到64位库。我猜它运行在32位模式下。
file /usr/bin/python /usr/bin/python: Mach-O universal binary with 3 architectures /usr/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64 /usr/bin/python (for architecture i386): Mach-O executable i386 /usr/bin/python (for architecture ppc7400): Mach-O executable ppc
prosseek:siplib smcho$ file sip.so sip.so: Mach-O 64-bit bundle x86_64
我怎样才能强制python以64位模式运行呢?当我在Textmate上运行相同的代码时,没有问题。所以,我认为Textmate无论如何都应该在64位模式下运行。
/usr/bin
中使用特定版本路径 - 如上所述。应注意,Apple文档中控制此项的方式不同,并且将来可能会更改。文档方式涉及使用python
命令,要么设置VERSIONER_PYTHON_PREFER_32_BIT
环境变量,要么更改默认的plist。有关更多信息,请参见man 1 python
。此外,对于其他python,例如MacPorts或python.org安装程序python,在2.7(或3.2)之前的python中简单的“arch”方法将无法工作。 - Ned Deily