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

6 投票
4 回答
4054 浏览
提问于 2025-04-15 18:19

我只是想在我的开发机器上搭建这个环境——从Python.org下载的安装包还是32位的,安装扩展(比如MySQLdb)让我很头疼,因为我总是搞不清楚每个扩展需要什么样的设置。

补充说明:我并没有替换系统自带的Python,我只是把Python.org的安装包放在了正常的位置,也就是/Library/...,而不是/System/Library/...。

其他的东西似乎默认都是64位的,而默认的Python 2.6.1是64位的(在我用Python.org的版本替换之前)

我只想要一个64位的版本,能够在我的这台机器上运行,不需要其他多余的东西。

有没有人能给个简单的答案?

非常感谢,ssteinerX@gmail.com

4 个回答

5

总是用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

关于FLAGS的部分可能有点多余,但确实有效。

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,确保/opt/local/bin在/usr/local/bin和/usr/bin之前。如果你想让/opt/local/bin/python指向MacPorts的python2.6,就按照上面的步骤操作,然后:

$ sudo port install python_select
$ sudo python_select python26
11

如果你正在使用MacPorts,那么只需要简单地指定一个选项,告诉它不要编译成通用版本,像这样:

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二进制文件是通用版本:

% 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。当然,这些都是免费的开源软件!

补充一下,绝对不要替换或重命名原来的系统二进制文件!正如Ned Daily在评论中提到的:

“要么通过改变PATH环境变量中的搜索顺序来管理对目标python实例的访问,要么在必要时使用绝对路径,比如/opt/local/bin/python2.6。”

撰写回答