我正在使用Xcode 4.6.2构建PyObjC应用程序,并试图弄清楚如何将Python框架与应用程序捆绑在一起,以便我可以在不依赖具有特定Python版本的主机系统的情况下进行引用。
(我之前曾问过这个问题,但是从那以后,我决定嵌入框架是更好的方法。)
我知道这是人们做的事情-以我的经验,大多数独立的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 ```js appname.app/Contents/Frameworks/Python.framework而不是位于的系统Python.framework /System/Library/Frameworks/Python.framework?
对于这个问题,我有些僵持,我们将不胜感激。
不要尝试将/System/Library/Framework/Python.framework复制到您的应用程序捆绑包中,这几乎可以肯定不会满足您的要求(该应用程序无法在较旧的OSX版本上运行,并且在相同或较新的OSX版本),并且明智的使用许可证。
要使用该框架,您需要通过使用install_name_tool或通过创建一个自定义python框架(使用@executable_path /../../ Framework / Python之类的名称)来重写加载命令,该自定义python框架已经具有正确的安装名称值。框架/ Python。
我通常使用py2app来创建应用程序捆绑包(并不奇怪,因为我是py2app的维护者),该捆绑包也会自动包含所需的Python依赖项。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。