我目前正在将一个大包分解成小包。我想保留用于大型单体包的相同 API。
包布局类似于:
公司/ _楷模/ __init__.py 模型1.py 模型2.py 模型.py __init__.py
从和company._models/__init__.py
导入模型的地方,并且有model1.py
model2.py
models.py
from ._models import *
这种结构允许我通过 . 访问所有导出的模型company.models
。
我想做的是能够使用命名空间包将其拆分为更小的包,但保持相同的 API。所以我会有两个类似于以下布局的包
# 包1 公司/ _楷模/ 模型1.py # 包2 公司/ _楷模。 模型2.py
我对命名空间包的理解是我可以让两个包重叠,但是由于__init__.py
文件中不能有任意代码,所以我不能有这些import
行。
我想做的事有可能吗?
我看到的一种可能的解决方案是,它们不是单独的“包”,而是更像是核心包的插件,我将拥有某种register(plugin)
功能,将插件的导出添加到核心包的命名空间。