如何在 OS X 10.6 上构建 64 位 Python -- 只要 64 位,不要通用的废话
我只是想在我的开发机器上搭建这个环境——从Python.org下载的安装包还是32位的,安装扩展(比如MySQLdb)让我很头疼,因为我总是搞不清楚每个扩展需要什么样的设置。
补充说明:我并没有替换系统自带的Python,我只是把Python.org的安装包放在了正常的位置,也就是/Library/...,而不是/System/Library/...。
其他的东西似乎默认都是64位的,而默认的Python 2.6.1是64位的(在我用Python.org的版本替换之前)
我只想要一个64位的版本,能够在我的这台机器上运行,不需要其他多余的东西。
有没有人能给个简单的答案?
非常感谢,ssteinerX@gmail.com
4 个回答
总是用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的部分可能有点多余,但确实有效。
最简单的解决办法就是从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
如果你正在使用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。”