【问题标题】:How to force using 64 bit python on Mac OS X?如何在 Mac OS X 上强制使用 64 位 python?
【发布时间】:2011-03-13 13:09:20
【问题描述】:

使用 --arch x86_64 选项编译 sip 时出现以下错误。

prosseek:siplib smcho$ python -c 'import sip;打印啜饮' 回溯(最近一次通话最后): 文件“”,第 1 行,在 ImportError: dlopen(./sip.so, 2): 找不到合适的图像。发现: ./sip.so: mach-o,但架构错误

我发现预建的 Mac OS X python (snow leopard) 是通用的,它没有获得 64 位库。我猜它是在 32 位模式下运行的。

文件 /usr/bin/python /usr/bin/python:具有 3 种架构的 Mach-O 通用二进制文件 /usr/bin/python(用于架构 x86_64):Mach-O 64 位可执行 x86_64 /usr/bin/python(用于 i386 架构):Mach-O 可执行 i386 /usr/bin/python(用于架构 ppc7400):Mach-O 可执行 ppc prosseek:siplib smcho$ 文件 sip.so sip.so:Mach-O 64 位捆绑 x86_64

如何强制 python 在 64 位模式下运行?当我在 Textmate 上运行相同的代码时,没有问题。所以,我认为 Textmate 无论如何都应该在 64 位模式下运行。

添加

  • This link 展示了如何识别我正在运行的 python 是 32 位还是 64 位。我检查了我的 python 是 32 位的。
  • This link 展示了如何制作 32/64 位 python。但这对我不起作用。

【问题讨论】:

    标签: python macos 64-bit python-sip


    【解决方案1】:

    尝试使用arch(1),并提供特定版本的Python:

    arch -x86_64 /usr/bin/python2.6
    

    其实系统应该为你选择第一个合适的架构。作为

    $ file /usr/bin/python2.5
    /usr/bin/python2.5: Mach-O universal binary with 2 architectures
    /usr/bin/python2.5 (for architecture i386): Mach-O executable i386
    /usr/bin/python2.5 (for architecture ppc7400):  Mach-O executable ppc
    
    $ file /usr/bin/python2.6
    /usr/bin/python2.6: Mach-O universal binary with 3 architectures
    /usr/bin/python2.6 (for architecture x86_64):   Mach-O 64-bit executable x86_64
    /usr/bin/python2.6 (for architecture i386): Mach-O executable i386
    /usr/bin/python2.6 (for architecture ppc7400):  Mach-O executable ppc
    

    如果 python 以某种方式选择 2.5,那么您不能使用 64 位,但如果它选择 2.6,则应自动选择 x86_64 变体,如下所述。如果是前者,请尝试获取python_select并将版本更改为2.6。

    【讨论】:

    • 在 10.6 中不需要这样做,因为 python 2.6 和 3.0 默认为 64 位,而 2.5 仅在 32 位中可用。您使用的是哪个版本的 Mac OS X @prosseek?
    • 我用的是 10.6.4,arch -x86_64 不适合我。我添加了更多的 cmets。
    • @Kenny:这很奇怪,但它默认使用 i386 而不是 x86_64。
    • 虽然目前在 10.6 中可与 Apple 提供的 python2.6 一起使用,并且 - 如上所述 - 仅当您使用 /usr/bin 中的特定版本路径时,请注意 Apple 记录的方式控制这一点是不同的,并且将来可能会改变。记录的方式涉及使用python 命令并设置VERSIONER_PYTHON_PREFER_32_BIT env 变量或更改默认plist。请参阅man 1 python 了解更多信息。此外,对于其他 python,如 MacPorts 或 python.org 安装程序 python,简单的 arch 方法不适用于 2.7(或 3.2)之前的 python。
    【解决方案2】:

    好的,当你这样做时要非常小心,这将要求其他东西也是 64 位的。突然之间,如果 mod_python 不起作用,那么您需要重新编译 apache。然后是你所有的 python 模块,比如 tkinter/tix。如果您像我一样使用 10.5,请不要去那里,只需使用 32 位即可。

    如果您不知道http://www.macports.org/,请记住它是您的朋友。 :-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-07
      • 1970-01-01
      • 2012-10-03
      • 2012-11-01
      • 1970-01-01
      • 2011-04-06
      • 2013-12-10
      • 2010-11-21
      相关资源
      最近更新 更多