假設您創建了一個名爲app
的Python程序包,它包含一個名爲foo
的模塊,該模塊具有一個名爲say_hello
的功能,該功能將Hello!
打印到控制檯。何時需要修改Python __init__文件?
假設您還創建了第二個名爲boss_app
的Python程序包,該程序包有一個模塊main
。 app
和boss_app
位於相同的目錄中,並且該目錄位於Python路徑中。此外,__init__
文件全部爲空。其結構是:
app
__init__.py
foo.py
boss_app
__init__.py
main.py
我想導入到app
這樣boss_app.main
我可以調用app.foo.say_hello
。
我使用這個命令:
import app
app.foo.say_hello()
,我希望在控制檯中看到:
>>>> Hello!
相反,我得到的行爲是app
進口但它沒有訪問foo
。
我想出瞭解決的辦法是修改app.__init__
,使其包含以下命令:
from .foo import *
現在,我得到預期的行爲。
是否總是需要創建一個自定義__init__
的包,如果該包將被從外面包進口?
如果你想具體'進口app.foo'纔可以使用'app.foo.say_hello()',那麼它完全沒有離開'__init __。py'空。因此,您真的可以選擇與您想要的命名空間相比多少便利。 – Evert
但是,如果我想'導入應用程序'並有權訪問它的名稱空間,那麼我必須修改'__init__'的權利? –
推薦閱讀:https://docs.python.org/3/tutorial/modules.html – jonrsharpe