我正在制作一个Python / PyObjC包来使用Objective-C应用程序中的一些Twisted特性。
我需要在我的Python App中安装Core Foundation反应器:
from twisted.internet import cfreactor
cfreactor.install()
问题在于,当我使用py2app构建一个包时,所需的CFNetwork框架永远不会出现在我的包中,当我从我的Objetive-C应用程序加载包时它会崩溃。
有什么方法可以强制链接CFNetwork框架? 为什么不自动添加此框架?
答案 0 :(得分:2)
包含未自动检测到的软件包非常简单:只需将缺少的模块添加到setup.py文件中:
setup(
...
options=dict(
py2app=dict(
includes=["module1", "module"],
),
),
...
)
我不知道为什么没有自动包含CFNetwork,cfreactor的代码不应该以这种方式混淆py2app(也就是说,导入是使用常规import语句完成的,并且不会隐藏在C代码中或导入来电。)
您可以使用小型示例项目(例如一个简单的SystemPreferences插件)重现该问题吗?这样可以更容易地调试问题。
另外,你使用哪些版本的Twisted,PyObjC和py2app?