我正在制作一个 Python/PyObjC bundle ,以使用 Objective-C 应用程序中的一些 Twisted 功能。
我需要在我的 Python 应用程序中安装 Core Foundation Reactor:
from twisted.internet import cfreactor
cfreactor.install()
问题是,当我使用 py2app 构建 bundle 时,所需的 CFNetwork 框架永远不会出现在我的 bundle 中,并且当我从 Objetive-C 应用程序加载该 bundle 时,它会崩溃。
有什么方法可以强制链接CFNetwork框架吗? 为什么这个框架没有自动添加?
最佳答案
包含未自动检测到的包很容易:只需将缺少的模块添加到 setup.py 文件即可:
setup(
...
options=dict(
py2app=dict(
includes=["module1", "module"],
),
),
...
)
我不知道为什么 CFNetwork 没有自动包含,cfreactor 的代码不应该以这种方式混淆 py2app(也就是说,导入是使用常规导入语句完成的,并且不会隐藏在 C 代码或>导入调用)。
您可以使用一个小型示例项目(例如一个简单的 SystemPreferences 插件)重现该问题吗?这将使调试问题变得更加容易。
另外,您使用哪些版本的 Twisted、PyObjC 和 py2app?
关于python - py2app bundle 中的 Twisted Core Foundation Reactor 和 CFNetwork,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14956242/