Python:如果我使用了几个子包,那么在__init__.py文件中放什么?

时间:2017-04-17 20:32:03

标签: python-3.x initialization python-import setup-project

我喜欢一个包含如下文件夹结构的包:

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()

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

from mypackage.data_transform.g1 import my_func

然后我会在某处使用my_func。这种新语法会出现很多错误,我不知道应该做什么,或者我应该把什么内容放到__init__.py文件中。

1 个答案:

答案 0 :(得分:1)

在python 3.3+中,.offset()文件不是必需的。从我的脚本中删除了所有__init__.py文件后,一切都运行良好:

__init__.py