0

我目前正在将一个大包分解成小包。我想保留用于大型单体包的相同 API。

包布局类似于:

公司/
    _楷模/
        __init__.py
        模型1.py
        模型2.py
    模型.py
    __init__.py

从和company._models/__init__.py导入模型的地方,并且有model1.pymodel2.pymodels.pyfrom ._models import *

这种结构允许我通过 . 访问所有导出的模型company.models

我想做的是能够使用命名空间包将其拆分为更小的包,但保持相同的 API。所以我会有两个类似于以下布局的包

# 包1
公司/
    _楷模/
        模型1.py
# 包2
公司/
    _楷模。
        模型2.py

我对命名空间包的理解是我可以让两个包重叠,但是由于__init__.py文件中不能有任意代码,所以我不能有这些import行。

我想做的事有可能吗?

我看到的一种可能的解决方案是,它们不是单独的“包”,而是更像是核心包的插件,我将拥有某种register(plugin)功能,将插件的导出添加到核心包的命名空间。

4

0 回答 0