How to force using 64 bit python on Mac OS X?

匿名 (未验证) 提交于 2019-12-03 08:52:47

问题:

I got the following error when compiling sip with --arch x86_64 option.

 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 

I found that the prebuilt Mac OS X python (snow leopard) is universal, and it doesn't get the 64 bit library. I guess it's running on 32bit mode.

 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 

How can I force python to run on 64bit mode? When I run the same code on Textmate, there's no problem. So, I think Textmate should run on 64 bit mode anyway.

Added

  • This link shows how to identify if a python that I'm running is 32bit or 64bit. And I checked my python is 32 bit.
  • This link shows how to make 32/64bit python. But it doesn't work for me.

回答1:

Try using arch(1), and supply the specific version of Python:

arch -x86_64 /usr/bin/python2.6 

Actually the system should choose the first suitable architecture for you. As

$ 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 

If that python somehow chooses 2.5, then you can't use 64-bit, but if it chooses 2.6 then the x86_64 variant should be automatically selected, as commented below. If it's the former, try to get python_select and change the version to 2.6.



回答2:

Okay, be REALLY careful when you do this, it's going to require other things to also be 64-bit. All of a sudden, if mod_python won't work, then you need to recompile apache. Then all your python modules like tkinter/tix. If you're on 10.5 like me, don't go there, just live with 32-bit for it.

And if you don't know about http://www.macports.org/ then remember that it's your friend. :-)



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!