【发布时间】:2014-04-21 23:41:03
【问题描述】:
我正在重组一个 python 项目,该项目是从一小部分脚本演变而来的。我之前没有考虑过正确的包结构,所以所有脚本都位于包根目录中。
我正在尝试为项目提供一个适当的“包”结构,如下所示:
packagename/
docs/
packagename/
__init__.py
module_data.py
module_corrections.py
module_plot.py
subpackage1/
subpackage2/
README.md
我想支持将包导入为:
from packagename import *
之前导入的效果应该是加载了几个子模块或子包,还有一些我想提供的类和函数,不加模块名。
在__init__.py 中使用__all__ 我只能加载子模块或子包。
如何加载,例如来自module_data 的Data() 类和来自模块module_plot 的函数dplot?
此外,如何使用另一个短名称(例如 mda)导入 module_data?
编辑
简答
我要提供的所有名称必须在__init__.py中导入或定义和
作为字符串添加到列表__all__。
感谢@FMc 提供示例和见解。
【问题讨论】:
-
仅供参考
from foo import *通常是不好的做法 - 请参阅 PEP-008。 -
当一个程序使用一个包时,我同意。但是在运行交互式会话时,我希望能够节省额外的输入:“实用性胜过纯度”。
标签: python package project python-import