如何在OS X 10.6上构建64位Python - 只有64位,没有通用的废话

时间:2010-01-21 17:19:36

标签: python macos 64-bit osx-snow-leopard x86-64

我只是想在我的开发机器上构建它 - 来自Python.org的二进制安装仍然是32位,安装扩展(例如MySQLdb)让我疯狂,试图找出每个和每个扩展。

澄清:我没有替换系统Python,我只是将Python.org二进制文件安装到/ Library / ...的正常位置,而不是/ System / Library /....

默认情况下,其他所有内容似乎都构建了64位,默认的Python 2.6.1是64位(在我用Python.org构建代替它之前,它是直接替换它)``

我只想要一个64位的版本,它可以在我的一台机器上运行而不会有任何瑕疵。

有没有人有简单的答案?

非常感谢,ssteinerX @ gmail.com

4 个答案:

答案 0 :(得分:11)

如果您正在使用MacPorts,那就像指定变体一样简单,告诉它不要编译Universal,如下所示:

sudo port install python26 -universal

您可以使用variants命令查看可用的变体:

% port variants python26                                                        
python26 has the variants:
   darwin: Platform variant, selected automatically
   no_tkinter: Disable Tkinter support, which will break IDLE
   ucs4: Enable support for UCS4
   universal: Build for multiple architectures

正如您所看到的,默认情况下在10.6上构建了darwin变体,它只构建x86_64:

% cd /opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin/
% file python2.6
python2.6: Mach-O 64-bit executable x86_64

比较默认的python二进制文件,即Universal:

% 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

如果您不使用MacPorts,我建议您考虑一下。它节省了大量的时间和心痛,不得不手动配置和编译所有内容,并且有一个很棒的GUI界面,叫做Porticus。当然,所有免费和开源!

P.S。 从不替换或重命名原始系统二进制文件!正如Ned Daily的评论中所建议的那样:

  

“管理对目标的访问   python实例通过更改搜索   在PATH环境变量中排序   或者,如有必要,使用绝对路径   像/opt/local/bin/python2.6“。

答案 1 :(得分:5)

最简单的解决方案是从MacPorts拉所有

$ sudo port selfupdate
$ sudo port install python26 +no_tkinter -universal py26-mysqldb -universal

这将安装python2.6,MySQLdb适配器和必要的MySQL客户端库。我建议添加no_tkinter变体,除非你真的需要tkinter; 10.6的MacPorts版Tk存在一些问题。

编辑:注意,MacPorts Python将安装为/opt/local/bin/python2.6。您可能需要调整shell $ PATH以确保在/ usr / local / bin和/ usr / bin之前使用/ opt / local / bin。如果你想/ opt / local / bin / python引用MacPorts python2.6,请执行以上操作:

$ sudo port install python_select
$ sudo python_select python26

答案 2 :(得分:5)

总是macports ...... sheesh

这就是我所做的:

~: wget http://python.org/ftp/python/2.6.5/Python-2.6.5.tar.bz2
~: tar xjf Python-2.6.5.tar.bz2
~: cd Python-2.6.5
~: ./configure ./configure MACOSX_DEPLOYMENT_TARGET=10.6 --enable-framework --with-universal-archs="64-bit" CFLAGS="-arch x86_64" LDFLAGS="-arch x86_64"
~: make -j6
~: sudo make install

可能在FLAGS上有点多余,但它确实有效。

答案 3 :(得分:3)

使用上面列出的方法获得64位Python设置之后,我还发现这个blog post by Aaron Meurer有助于验证Python实际上是否安装为64位。该文章还谈到了运行64位Python和32位安装,我认为这对某些用途很有用。