1

我正在制作一个 Python/PyObjC 包以使用来自 Objective-C 应用程序的一些 Twisted 功能。

我需要在我的 Python 应用程序中安装一个 Core Foundation 反应器:

from twisted.internet import cfreactor
cfreactor.install()

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

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

4

1 回答 1

2

包含未自动检测到的包很容易:只需将缺少的模块添加到 setup.py 文件中:

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

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

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

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

于 2013-02-19T15:57:42.627 回答