6

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

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

其他一切似乎默认构建为 64 位,默认的 Python 2.6.1 是 64 位(在我用 Python.org 构建替换它之前,认为它是直接替换)`

我只想要一个 64 位的构建,它可以在我的一台机器上运行而没有任何麻烦。

有人有简单的答案吗?

非常感谢,ssteinerX@gmail.com

4

4 回答 4

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 二进制文件相比:

% 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 界面。当然,所有免费和开源!

ps永远不要替换或重命名原始系统二进制文件!正如 Ned Daily 的评论中所建议的那样:

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

于 2010-01-21T17:36:52.980 回答
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 的东西可能有点多余,但它确实有效。

于 2010-06-13T21:09:51.887 回答
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
于 2010-01-21T19:21:37.413 回答
3

一旦您使用上述方法安装了 64 位 Python,我还发现Aaron Meurer 的这篇博客文章有助于验证 Python 实际上安装为 64 位。这篇文章还谈到了在 32 位安装的同时运行 64 位 Python,我想这对某些目的很有用。

于 2010-06-13T21:03:37.623 回答