微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我正在使用Xcode 4.6.2构建PyObjC应用程序,并试图弄清楚如何将Python框架与我的应用程序捆绑在一起,以便我可以在不依赖具有特定Python版本的主机系统的情况下进行引用.

(我之前曾问过this问题,但从那以后,我决定嵌入框架是更好的方法.)

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

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

如果我在Xcode的“链接的框架和库”中链接到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,而不是位于/ System / Library / Frameworks /的系统Python.framework Python.framework?

对于这个问题,我有点僵局,我们将不胜感激.

解决方法:

不要尝试将/System/Library/Framework/Python.framework复制到您的应用程序捆绑包中,这几乎可以肯定不会满足您的要求(该应用程序无法在较旧的OSX版本上运行,并且在相同或较新的OSX版本),并且明智地使用许可证.

要使用该框架,您需要通过使用install_name_tool或通过创建一个自定义python框架(使用@executable_path /../../ Framework / Python之类的名称)来重写加载命令,方法是创建一个自定义python框架.框架/ Python.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐