如何在Snow Leopard上强制使用32位Python及其他32位/64位问题
当我在我的Mac上从bash终端运行以下命令时:
$ file /usr/bin/python
我得到了以下三行输出:
/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
这似乎表明Python是为所有三种架构编译的,或者类似的意思?根据我在设置MySQL时遇到的一些错误,我相信我使用的版本是64位的。那么我有两个问题:
我怎么知道这一点呢?
我怎么能把Python改成32位的呢?有没有比重新编译更简单的方法?
为什么在bash终端中运行
arch
命令返回i386
,这似乎表明我不是在“64位模式”下,而我知道我的处理器是64位的Mac?
抱歉,这些问题可能都是新手问题,32位和64位的事情让我很困惑,我相信有一些命令或工具可以让这个过程更简单。
7 个回答
在Snow Leopard上与virtualenv一起使用的解决办法
danielrsmith的回答对我在不使用virtualenv时有效,但使用virtualenv后,它会复制一个python可执行文件,这就导致它无法正常工作:
$ which python
/Users/cogg/.virtualenvs/tweakeats/bin/python
$ python
[...]
>>> import sys
>>> sys.maxint
9223372036854775807
因为这是一个python的复制品,所以我用lipo工具去掉了64位的架构。这样我就可以在virtualenv中使用32位的python 2.6了:
$ lipo -info /Users/cogg/.virtualenvs/tweakeats/bin/python
Architectures in the fat file: /Users/cogg/.virtualenvs/tweakeats/bin/python are: x86_64 i386 ppc7400
$ mv /Users/cogg/.virtualenvs/tweakeats/bin/python /Users/cogg/.virtualenvs/tweakeats/bin/python.old
$ lipo -remove x86_64 /Users/cogg/.virtualenvs/tweakeats/bin/python.old -output /Users/cogg/.virtualenvs/tweakeats/bin/python
$ python
[...]
>>> import sys
>>> sys.maxint
2147483647
这是一个关于如何在Mac电脑上让Python以32位模式运行的说明。你可以通过访问这个链接了解更多信息:http://www.jaharmi.com/2009/08/29/python_32_bit_execution_on_snow_leopard
如果你想让Python使用32位版本,可以在终端里输入这行代码:$ defaults write com.apple.versioner.python Prefer-32-Bit -bool yes
你可以通过
platform
模块来了解你正在使用的 Python 版本(sys
模块也有一些简单的帮助工具)。在 Mac OS X 上,你可以运行一个“胖二进制文件”,选择你想要的架构,比如说,
arch -i386 /usr/bin/python
我不建议你去修改 /usr/lib/python 这个文件夹(使用 lipo
命令)——这样做很可能会让你的系统变得无法使用,因为你在动系统文件。也许你可以考虑从 python.org 安装一个单独的 Python 版本(用于应用程序),而不去碰系统自带的 Python,这样的做法会更安全!-)
至于你的第三个问题,嗯,这个我就不知道了——这确实是个难题,建议去 superuser.com 问问(而且这问题似乎和 Python 完全无关,也和编程没什么关系;-)。