将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依赖项.

上一篇:xcode 终端调起模拟器


下一篇:C#-如何在m​​onotouch Xamarin中动态调整按钮和标签的大小