我know有are一個ton的how-to進口Python modules不是路徑,但我還沒有遇到過使用Python的__init.py__ VS sys.path.insert。哪種方法更好?是否有任何明顯的缺點,如表現?還有一個「Pythonic?」嗎?Python的__init__.py VS sys.path.append /插入
我可以想到的一個場景是我有一個程序,用戶下載並放在任何目錄中,所以我不知道絕對路徑(除非我以編程方式獲得它)。該文件夾的結構是
working dir
__init__.py
foo.py
src/
my_utils.py
__init__.py
我沒有看到使用__init__.py或更改sys.path之間的任何區別。有什麼情況可以想到它會在哪裏產生變化?
我的問題的第2部分是,爲什麼你必須做什麼能夠從子目錄導入模塊?我對Python相當陌生,所以也許我不明白爲什麼擺弄路徑或創建文件是樣板文件。對我而言,這似乎是一種不必要的複雜情況。如果我在當前工作目錄中有「dir」,並說「import dir.my_utils」,我不明白爲什麼我必須列出所有我希望能夠在__init__.py中導入的內容。
道歉,如果這是重複的,但我在發佈之前做過搜索。
編輯:這裏的另一個有用的鏈接:Automatically call common initialization code without creating __init__.py file
「__init.py__' vs'sys.path.insert'」是什麼意思?這些東西在哪些方面可比? –
因此,我可以將\ __ init__.py放在每個文件夾中,所以在foo.py中,我可以說「init src.my_utils」。或者,在foo.py中,我可以說「import sys; sys.path.insert(1,」src「的路徑); import my_utils」 – liang
這些仍然完全不同。 –