2017-09-14 154 views
-2

我在當前目錄中有__init__.py文件。在哪種情況下運行__init__.py?

我需要一個完整的環境列表,在該環境下運行該文件。

第一種情況是

import __init__ 

在同一目錄下寫入script.py這個文件運行。

什麼是其他情況?

+2

'import __init__'真的很奇怪。也許你想'進口。作爲......'?想要「運行」一個模塊而不是利用它的內容表明設計不好,儘管(對導入吸盤有副作用的模塊)。考慮寫一個函數,導入('from。import main'),然後調用它。 – Ryan

+0

我把這標記爲不清楚。你說過你不想寫什麼,但是你想寫什麼_do_?你想要達到什麼目的?你能寫一個最小的工作例子嗎? – ymbirtt

+0

這是我的問題:我不想導入__init__,我希望它自動運行 – Dims

回答

0

A __init__.py文件在與其對應的包被導入時運行。因此,當您import some_package時,將執行文件some_package\__init__.py。從包中導入子模塊時,首先加載包。因此import aa.bb.cc將在加載aa.bbaa.bb.cc之前加載aa(並因此執行aa/__init__.py)。

文件夾some_package必須是可發現的,這意味着它必須存在於其中一個sys.path文件夾中。這包括當前目錄。

如果您只是運行一個腳本(python some_script.py),而碰巧在同一個文件夾中有一個__init__.py文件,那麼這就意味着什麼都沒有,因爲當前文件夾本身不是一個包。 (當然,除非你執行恰好駐留在包內的腳本)。

+0

另外一個:如果你想能夠運行這個包,你可以構造一個__main__.py文件(參見[here ](https://stackoverflow.com/questions/4042905/what-is-main-py)) – Nemelis