__init__.py当导入包含它的包(目录)时,所有导入都可用。
例:
./dir/__init__.py:
import something
./test.py:
import dir# can now use dir.something
编辑:忘了提及,
__init__.py您第一次从该目录导入任何模块时,中的代码就会运行。因此,通常是放置任何程序包级初始化代码的好地方。
EDIT2:dgrant指出了我的示例中可能存在的混乱。In
__init__.py
importsomething可以导入任何模块,而不必从包装中导入。例如,我们可以将其替换为
importdatetime,然后在顶层
test.py都可以使用以下两个代码片段:
import dirprint dir.datetime.datetime.now()
和
import dir.some_module_in_dirprint dir.datetime.datetime.now()
最重要的是:在
__init__.py导入包或包中的模块时,在包命名空间中将自动提供在中分配的所有名称(无论是导入的模块,函数还是类)。



