所以我想通過小腳本和web開發移動到桌面應用程序,擴大我的Python的知識和技能,和我有一些無法理解的切入點與setup.py
,他們對進口的影響。我也沒有深入瞭解導入如何在Python中工作,這沒有幫助。絕對進口和入口點
我的困惑來自於尋找一個大的桌面應用程序的示例代碼,特別是Deluge,用Python編寫的一個torrenting應用。
看它的代碼,似乎所有進口其自己的模塊是絕對的,例如:
# deluge/core/core.py
import deluge.common
from deluge.core.eventmanager import EventManager
但有趣的是它所有的入口點,如setup.py
定義是在程序中也更深:
# setup.py
entry_points = {
'console_scripts': [
'deluge-console = deluge.ui.console:start',
'deluge-web = deluge.ui.web:start',
'deluged = deluge.core.daemon_entry:start_daemon'
],
'gui_scripts': [
'deluge = deluge.ui.ui_entry:start_ui',
'deluge-gtk = deluge.ui.gtkui:start'
],
'deluge.ui': [
'console = deluge.ui.console:Console',
'web = deluge.ui.web:Web',
'gtk = deluge.ui.gtkui:Gtk',
],
}
從我可以告訴,根據this SO question的答案,這通常是不可能的。要使用絕對導入,程序必須從項目根目錄中的文件開始。
據我瞭解,洪水必須以某種方式改變它的PYTHONPATH,例如sys.path
,然而搜索代碼只能找到它的一個實例,但它似乎只與文檔有關,而不是實際的軟件碼。
因此,如何將一個有他們的Python程序模塊中更深層次的切入點,但使用絕對進口項目的根? Deluge似乎已經做到了,但我不知道如何,我想在我的項目中這樣做。
而作爲一個側面的問題,如果你知道用Python編寫的任何其它大型桌面應用程序的,我可以看看爲例子,我喜歡它,如果你告訴我吧:)
乾杯