【问题标题】:Twisted Core Foundation reactor and CFNetwork in the py2app bundlepy2app 包中的 Twisted Core Foundation reactor 和 CFNetwork
【发布时间】:2013-02-19 11:23:01
【问题描述】:

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

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

from twisted.internet import cfreactor
cfreactor.install()

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

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

【问题讨论】:

    标签: python cocoa twisted pyobjc py2app


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 我认为问题是在我的 $PYTHONPATH 中找不到 pyobjc。我正在使用一个简单的脚本进行测试:import objc import CFNetwork print 'Hello' 我得到了一个“ImportError:没有名为 CFNetwork 的模块”,但我的 $PYTHONPATH 包含“~/Devel/UbuntuOne/scripts/devsetup/eggs”并且这个文件夹包含“pyobjc_core-2.5 .0b1-py2.7-macosx-10.6-x86_64.egg”和“pyobjc_framework_Cocoa-2.5.0b1-py2.7-macosx-10.6-x86_64.egg”鸡蛋。有什么想法吗?
    • 将“/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC”添加到我的 $PYTHONPATH 一切正常,感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 2021-12-13
    相关资源
    最近更新 更多