如何强制在Mac OS X上使用64位Python?
我在用 --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(雪豹系统)是通用版本,但它没有获取到 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 位模式运行的。
补充说明
2 个回答
1
好的,做这个的时候一定要非常小心,因为这需要其他东西也都是64位的。如果突然发现mod_python不工作了,那你就得重新编译apache。还有你所有的python模块,比如tkinter/tix。如果你和我一样用的是10.5版本,那就别去碰这个,还是用32位的吧。
如果你还不知道http://www.macports.org/,那记得它是你的好帮手哦。:-)
6
试试使用 arch(1),并指定你想要的Python版本:
arch -x86_64 /usr/bin/python2.6
其实系统应该会为你选择第一个合适的架构。
$ file /usr/bin/python2.5
/usr/bin/python2.5: Mach-O universal binary with 2 architectures
/usr/bin/python2.5 (for architecture i386): Mach-O executable i386
/usr/bin/python2.5 (for architecture ppc7400): Mach-O executable ppc
$ file /usr/bin/python2.6
/usr/bin/python2.6: Mach-O universal binary with 3 architectures
/usr/bin/python2.6 (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/python2.6 (for architecture i386): Mach-O executable i386
/usr/bin/python2.6 (for architecture ppc7400): Mach-O executable ppc
如果那个 python
不知怎么的选择了2.5版本,那你就不能使用64位的版本;但如果它选择了2.6版本,那么应该会自动选择x86_64这个变种,下面有评论提到过。如果是前者,试着获取 python_select
并把版本改成2.6。