2013-02-19 19 views
1

我正在製作Python/PyObjC軟件包以使用Objective-C應用程序中的某些Twisted特性。py2app軟件包中的Twisted Core Foundation反應器和CFNetwork

我需要在我的Python應用程序安裝一個核心基礎反應器:

from twisted.internet import cfreactor 
cfreactor.install() 

的問題是,當我建立與py2app束,所需的CFNetwork框架從來沒有出現在我的包裏面,當我加載從我的Objetive-C應用程序捆綁它崩潰。

有什麼辦法強制鏈接CFNetwork框架? 爲什麼這個框架不是自動添加的?

回答

2

未全自動檢測包括包裝很簡單:只需缺少的模塊添加到您的setup.py文件:

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

我不知道爲什麼CFNetwork的是不是全自動包括,代碼cfreactor不應該以這種方式混淆py2app(也就是說,導入是使用常規導入語句完成的,並且不會隱藏在C代碼或調用中)。

您可以使用小樣本項目(例如一個簡單的SystemPreferences插件)來重現該問題嗎?這將使調試問題變得更容易。

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

+1

我認爲問題是在我的$ PYTHONPATH中找不到pyobjc。 我用一個簡單的測試腳本: '進口objc 進口CFNetwork的 打印「Hello'' 而且我得到了一個‘導入錯誤:沒有模塊名爲CFNetwork的’,但我的$ PYTHONPATH包含「〜/傑韋利/ 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「蛋。 有什麼想法? – user1204395 2013-02-19 22:58:25

+0

將「/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC」添加到我的$ PYTHONPATH中一切正常,謝謝你的幫助! – user1204395 2013-02-19 23:44:52

相關問題