我正在創建一些模塊GUI
(描述圖形界面),它需要另一個模塊somecalc
(進行一些計算)。後者導入標準庫:os
,sys
,time
等導入其他子模塊並忽略標準庫
目標是最終構建一個包。
我無法找到關於包裝和/或其他自主研發的模塊中引入其他子模塊的約定:
不弄亂名字空間(並自動完成在IPython中):
- 我不希望看到
somecalc.os
,somecalc.sys
,somecalc.time
- 我不希望看到
,而無需重新導入已經進口的
somecalc
- 即使我在
somecalc.py
書面方式import os as _os
解決問題#1標準庫,我也做同樣的兩種方式。如果我做內GUI
以下測試: somecalc.os is os #TRUE
(在somecalc.py
import os
)somecalc._os is os #TRUE
(從IPython中沒有自動完成與somecalc.py
import os as _os
)
- 即使我在
無需繁瑣調用標準庫,例如當我簡單寫
os.listdir
時寫somecalc.os.listdir
。除此之外,我不認爲其他開發人員是否願意與我一起開展項目。
我知道,一旦我希望把我的文件夾成一個包,我建議增加一個__init__.py
文件用我所有的進口。但是當我開發/調試我的子模塊時(使用if __name__ = '__main__'
以下的代碼),根目錄中的__init__.py
文件將被忽略。除此之外,我還需要在我的GUI.py
文件的開頭寫上import somecalc
。
什麼是約定?
您的解決方案並不讓我從GUI訪問標準庫,或在更麻煩方式:現在somecalc.os.listdir成爲somecalc.somecalc.os.listdir。 – Wli
使用'import sys'訪問標準庫?問題是什麼 ? – Cyrbil
我不確定,這就是爲什麼我問大會。 因此,即使模塊「x」已經導入到子模塊「sm」中,我仍然必須每次導入「x」到所有已導入「sm」的模塊中,對吧? 這是我發現奇怪的,因爲我從來沒有在下載的模塊目錄下找到標準庫。 – Wli