【发布时间】:2018-01-11 13:35:44
【问题描述】:
说明
假设,我有一个结构如下的包:
package-folder
|_ mypackage
|_ __init__.py
|_ module1.py
setup.py
__init__.py 为空且
module1.py:
def do_stuff():
print('Did stuff.')
setup.py 包含用于制作包的常用上下文,可以使用pip install -e pkgpath 在本地系统上安装。
在script.py 中,我必须这样做:
import mypackage as abbr
abbr.module1.do_stuff()
# output: Did stuff.
我想要的电话是:
abbr.do_stuff()
# output: Did stuff.
问题
- 如何“组织”我的包,以便可以直接从
abbr.function()调用 module1.py 中的函数?需要更改哪些代码? - 如果包增长,这个组织有用吗?因此目录将充当结构元素,而 python 文件只是在其中组织我的函数的胶囊?
- 在模块和子模块中组织功能的最佳方式是什么?
进一步的想法
- 是否有充分的理由不在每个可从模块中使用的 python 文件中设置一个函数? (并且与文件同名)
- 我想,我将不得不修改我的
__init__.py-文件,但我不知道怎么做。
关于问题 2 的说明
package-folder
|_ mypackage
|_ __init__.py
|_ module1.py #with function do_stuff1()
|_ subpackage
|_module2.py #with function do_stuff2()
setup.py
调用应该是:
abbr.do_stuff1()
abbr.subpackage.do_stuff2()
而不是:
abbr.module1.do_stuff1()
abbr.subpackage.module2.do_stuff2()
【问题讨论】:
标签: python python-3.x module python-import