py2app包中的Twisted Core Foundation反应器和CFNetwork

时间:2013-02-19 11:23:02

标签: python cocoa twisted pyobjc py2app

我正在制作一个Python / PyObjC包来使用Objective-C应用程序中的一些Twisted特性。

我需要在我的Python App中安装Core Foundation反应器:

from twisted.internet import cfreactor
cfreactor.install()

问题在于,当我使用py2app构建一个包时,所需的CFNetwork框架永远不会出现在我的包中,当我从我的Objetive-C应用程序加载包时它会崩溃。

有什么方法可以强制链接CFNetwork框架? 为什么不自动添加此框架?

1 个答案:

答案 0 :(得分:2)

包含未自动检测到的软件包非常简单:只需将缺少的模块添加到setup.py文件中:

setup(
   ...
   options=dict(
      py2app=dict(
        includes=["module1", "module"],
      ),
   ),
   ...
)

我不知道为什么没有自动包含CFNetwork,cfreactor的代码不应该以这种方式混淆py2app(也就是说,导入是使用常规import语句完成的,并且不会隐藏在C代码中或导入来电。)

您可以使用小型示例项目(例如一个简单的SystemPreferences插件)重现该问题吗?这样可以更容易地调试问题。

另外,你使用哪些版本的Twisted,PyObjC和py2app?