python - 将 Python 框架捆绑到 Xcode 应用程序中

标签 python xcode macos xcode4.5 pyobjc

我正在使用 Xcode 4.6.2 构建 PyObjC 应用程序,并试图找出如何将 Python 框架与我的应用程序捆绑在一起,这样我就可以在不依赖具有特定 Python 版本的主机系统的情况下引用它。

(我之前问过 this 问题,但从那时起,我决定嵌入框架是更好的方法。)

我知道这是人们所做的事情——根据我的经验,大多数独立的 Python 应用程序都在其中打包了 Python 安装。但我不知道如何让它为我工作。

我已经使用构建阶段“复制文件”面板将 Python.framework 复制到我的项目中,并且 Python.framework 确实出现在我的应用程序包中,但我不知道如何获取应用程序以引用它。

如果我在 Xcode 的“Linked Frameworks and Libraries”中链接到 Python.framework,应用程序会正确构建,但在 10.6 上启动时失败并出现错误

Dyld Error Message:
    Library not loaded: /System/Library/Frameworks/Python.framework/Versions/2.7/Python
    Referenced from: {/path/to/my/app}
    Reason: image not found

...因为 10.6 只有 Python 2.5,它正在搜索系统框架,而不是我的应用程序包中包含的框架。

如果我链接到 Xcode 中的 Python 框架,应用程序将无法构建。

那么我如何告诉我的应用程序我希望它使用捆绑在我的应用程序中的 Python.framework,位于 appname.app/Contents/Frameworks/Python.framework,而不是系统 Python。框架位于 /System/Library/Frameworks/Python.framework?

我在这个问题上陷入了僵局,非常感谢任何帮助。

最佳答案

不要尝试将/System/Library/Framework/Python.framework 复制到您的应用程序包中,这几乎肯定不会执行您想要的操作(该应用程序无法在旧的 OSX 版本上运行,并且不是在相同或更新的 OSX 版本上是必需的),并且是狡猾的许可证明智的。

要使用该框架,您需要重写加载命令,方法是使用 install_name_tool,或创建一个已经具有正确安装名称值的自定义 python 框架(类似于 @executable_path/../../Framework/Python.framework/Python.

我通常使用 py2app 来创建应用程序包(不足为奇,因为我是 py2app 的维护者),它也会自动包含所需的 Python 依赖项。

关于python - 将 Python 框架捆绑到 Xcode 应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17932606/

相关文章:

python - 将 CIFAR 1d 数组从 pickle 转换为图像 (RGB)

python - 使用 WebRTC 和 Python 服务器进行人脸情绪分析

xcode - 更改 Xcode 项目中主文件夹的名称

excel - 如何从 VBA (Excel) 调用 Bash 脚本

python - 使用 python HTTPServer 处理请求数量

python - Ansible 回调 : get the name of the playbook being executed

xcode - CocoaPods 是否阻止双击 XCode 项目文件?

xcode - 如何制作 Mac 安装程序将简单地从中安装(复制)文件的 .pkg?

linux - 什么时候需要在外壳程序中的命令参数周围使用引号?

linux - Rails3 中的 wkhtmltopdf 在 Mac 上可以运行,但在 Ubuntu 上失败