Python: 如果我使用多个子包,应该在 __init__.py 文件中放些什么?

Python: What to put in __init__.py files if I'm using several subpackages?

我构建了一个文件夹结构如下的包:

MyPackage
|
├──mypackage
|     |
|     ├── __init__.py
|     |
|     ├── config.py
|     |
|     ├── data_clean
|     |   ├── __init__.py
|     |   └── f1.py
|     |
|     ├── data_transform
|     |   ├── __init__.py
|     |   └── g1.py
|     |
|     └── stat_calc
|         ├── __init__.py
|         ├── s1.py
|         └── command_line_interface.py # <- users will use this from cmd.exe
| 
├── README.txt    
|
└── setup.py

所有 4 个 __init__.py 文件都是空的。本来,当我想要 s1.py 使用 g1.py 中的函数时,我会做

import mypackage.data_transform.g1

然后我会在某个地方做

mypackage.data_transform.g1.my_func()

然后,为了保存,space 我将所有导入更改为

from mypackage.data_transform.g1 import my_func

然后我会在某处使用 my_func。这个新语法有很多错误,我不确定我应该做什么或者 if/what 我应该把东西放到 __init__.py 文件中。

在 python 3.3+ 中,__init__.py 文件不是必需的。在我从我的脚本中删除所有 __init__.py 文件后,一切正常,只需要:

from mypackage.data_transform.g1 import my_func