【发布时间】:2019-12-22 21:17:31
【问题描述】:
我有一个这样的 Python 模块目录结构:
my_module
|--__init__.py
|--public_interface
| |--__init__.py
| |--my_sub_module
| | |--__init__.py
| | |--code.py
| |--some_more_code.py
|--other directories omitted
现在,public_interface 目录(以及其他几个目录)仅用于将代码组织成逻辑子单元,作为我和其他开发人员的指南。 my_module 的最终用户只能将其视为 my_module.my_sub_module,而中间没有 public_interface。
我写了这些__init__.py 文件:
my_module.__init__.py:from .public_interface import *
和
my_module.public_interface.__init__.py:from . import my_sub_module from .some_more_code import *
和
my_module.public_interface.my_sub_module.__init__.py:from .code import *
只要用户只导入顶级模块,这就可以正常工作:
import my_module
my_module.my_sub_module.whatever # Works as intended
但是,这不起作用:
from my_module import my_sub_module
也不:
import my_module.my_sub_module
我需要进行哪些更改才能使最后两个导入起作用?
【问题讨论】:
-
就是OOC,为什么是公用接口,而不是私有接口?
-
这更像是一个示例,以了解我想要实现的目标和原因。实际的目录名称不同,但对我和其他开发人员来说,公共接口和业务逻辑都有意义。为了实现我的目标,我只会在绝对必要的情况下更改它。
标签: python python-import python-module python-packaging