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
我构建了一个文件夹结构如下的包:
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