如何在OSX10.6上构建64位Python,只有64位,没有通用的nonsens

2024-10-01 07:36:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我只想在我的开发机器上构建这个程序——从Python.org网站仍然是32位,安装扩展(例如MySQLdb)让我抓狂,试图为每个扩展找出正确的标志。在

澄清:我没有更换系统Python,我只是安装了Python.org网站在/Library/…,而不是/System/Library/。。。。在

默认情况下,其他所有东西都是64位的,而默认的Python2.6.1是64位的(在我用Python.org网站构建计算它是一个直接的替代品)`

我只想要一个64位的构建,它将在我的一台机器上运行,没有任何问题。在

有人有简单的答案吗?在

多谢了,ssteinerX@gmail.com在


Tags: 答案org程序com机器替代品网站标志
3条回答

总是macports。。。绵羊

我就是这么做的:

~: 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

在旗子上可能有点多余,但它起作用了。在

最简单的解决方案是从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,以确保/opt/local/bin位于/usr/local/bin和/usr/bin之前。如果希望/opt/local/bin/python引用MacPorts python2.6,请执行上述操作并:

^{pr2}$

如果您碰巧在使用MacPorts,那么只需指定一个变量,告诉它不要编译Universal,如下所示:

sudo port install python26 -universal

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

^{pr2}$

如您所见,默认情况下,它在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二进制文件比较,后者是通用的:

% 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,我建议你考虑一下。它节省了大量的时间,也节省了手动配置和编译所有东西的心痛,而且还有一个名为Porticus的优秀GUI界面。当然,都是免费和开源的!在

p.s.从不替换或重命名原始系统二进制文件!正如Ned Daily的评论所建议的:

"Either manage access to the intended python instance by changing the search order in the PATH environment variable or, if necessary, use an absolute path like /opt/local/bin/python2.6".

相关问题 更多 >