如何在雪豹和其他32位/64位问题上强制Python为32位

2024-06-26 07:22:09 发布

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

当我在Mac上运行bash shell时:

$ 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位版本。所以有两个问题:

  1. 我怎么会知道呢?

  2. 如何将Python改为32位?有什么比用不同的编译设置重新编译更不激烈的事情吗?

  3. 为什么bash shell中的arch返回i386,这似乎表明我没有处于“64位模式”,而根据我的处理器,我运行的是64位Mac?

抱歉,这些可能都是新手的问题,整个32/64位的事情是令人沮丧的废物,我相信有一些命令/工具,将使这更容易。


Tags: 版本bashforbinmacusrbitshell
3条回答

在雪豹上与virtualenv一起使用的修复程序

当我不使用virtualenv时,danielrsmith的答案对我有效,但是virtualenv复制了python的可执行文件,导致它无法工作:

$ which python
/Users/cogg/.virtualenvs/tweakeats/bin/python

$ python
[...]
>>> import sys
>>> sys.maxint
9223372036854775807

因为这是python的副本,所以我使用lipo删除了64位体系结构。这允许我在virtualenv中使用32位Python2.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

http://www.jaharmi.com/2009/08/29/python_32_bit_execution_on_snow_leopard

$ defaults write com.apple.versioner.python Prefer-32-Bit -bool yes

  1. 您可以通过platform模块(该sys模块也有一些简单的帮助程序)了解正在运行的Python版本

  2. 在MacOSX上,你可以用你选择的架构运行一个“胖二进制”,例如

    架构-i386/usr/bin/python

我确实不建议(使用lipo命令)修改/usr/lib/python本身——通过篡改系统文件,可以很容易地使系统不可用。也许在Python.org中安装一个单独的Python(用于应用程序目的)而不使用系统Python是一个可以接受的策略——它绝对比修改系统文件更安全!-)

至于你的第三个问题,嗯,这个问题对我来说是一个难解的问题——当然对于superuser.com来说也是一个问题(除了与Python完全无关之外,它似乎也与编程完全无关;-)。

相关问题 更多 >