【问题标题】:Building binary python distributions for multiple OS X versions为多个 OS X 版本构建二进制 python 发行版
【发布时间】:2011-12-01 01:03:39
【问题描述】:

我正在尝试在 OS X 上构建一个带有二进制模块的 Python 应用程序。我想为来自 Lion 的 Snow Leopard 和 Leopard 构建版本。我已经使用 10.5 和 10.6 sdks 安装了 XCode 4,并且一直在尝试使用设置为 10.6 的 MACOSX_DEPLOYMENT_TARGET 标志进行构建。我从 distutils 收到一条错误消息,抱怨 python 是使用不同的部署目标构建的。

我尝试构建一个单独的 python 二进制文件,并将部署目标设置为 10.6,然后使用 virtualenv 尝试从中构建,但 virtualenv 期望基础 env 目录下的 lib 目录不存在。

我是一个在 Mac 上开发的新手,甚至不确定我想做的事情是否可行。我是否将不得不崩溃并让仍在运行 Snow Leopard 的人构建我的发行版?

非常感谢任何帮助。

【问题讨论】:

  • 你用什么来构建你的二进制包?我的猜测是,只要您的 python interp 是使用 i386 和 x86_64 构建的,并且您可能设置了 MACOSX_DEPLOYMENT_TARGET=10.5,那么二进制文件应该仍然可以在它们之间运行?
  • 感谢您的回复。如果我输入“MACOSX_DEPLOYMENT_TARGET=10.6 python setup.py build”,我会收到错误 distutils.errors.DistutilsPlatformError: $MACOSX_DEPLOYMENT_TARGET mismatch: now "10.6" but "10.7" during configure.
  • 我假设在配置期间是指python安装的原始配置。
  • 您可能需要从源代码构建另一个 python,而不是使用 Lion 附带的 2.7 interp。您可以使用 i386 和 x86_64 将其构建为 FAT 并使用 MACOSX_DEPLOYMENT_TARGET=10.5。这是 virtualdev 可以帮助你的地方,因为你可以切换到它,构建一个 python 并将它用于你的构建环境,而不是弄乱你的主要 python 2.7 interp
  • 是的,10.7 是指 Python 的构建时间,它与 Lion 一起提供。

标签: python macos build cross-compiling distutils


【解决方案1】:

Apple 在 OS X 10.7 中提供的系统 Python 仅适用于 10.7。最简单的解决方案是下载最新的Python 2.7 or 3.2 64-bit/32-bit installer from python.org 并使用它,因为它是一个可以在 10.6 或 10.7 上运行的通用二进制文件。如果您正在制作应用程序包,则需要为其安装 py2app 的副本以及任何其他第三方软件包,例如 Distribute(又名 easy_install)或 pip

【讨论】:

    【解决方案2】:

    我找到了解决方案,进入您的 /System/Library/Frameworks/Python.framework/Versions/2.7/lib/distutils/sysconfig.py

    转到显示“引发 DistutilsPlatformError”的第 408 行并添加一个“#”以注释掉该行代码...这将“释放 python”

    您基本上是在告诉 python“别担心它不是 10.7,我知道”可能会导致一些崩溃,但我认为并非如此。我非常复杂的 python 应用程序现在可以在 MacOSX 10.8 上毫无问题地编译,而且它似乎可以完成这项工作,但 QA 仍然需要对其进行测试。

    【讨论】:

    • 黑客系统 Python 源码真的不值得推荐。
    • 你是对的,如果有其他解决方案我会先去解决
    猜你喜欢
    • 1970-01-01
    • 2010-10-25
    • 2012-06-22
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    相关资源
    最近更新 更多