__init__.py文件是Python解释器在解析import语句所需要依赖的一个凭据,如果有import A.B.C,那么必须有如下几点要满足:

1)A 文件夹一定要在 Python 的模块搜索路径下,且这个文件夹下面一定要有 __init__.py文件,不管这个文件中是不是由内容。如果没有init文件,则Python会认为没有找到对应的module;

2)A/B/目录下也要有init文件,原理 同1);

3)C要么是一个包含init文件的目录,要么是一个py文件。

小结:可以把__init__.py文件作为 Python 构建 namespace体系的一个依据,缺少这个依据,那么相应的目录就不会被当做模块对待。

ps:通过 os.path 类可以管理 Python 的模块搜索路径。