0

現在、大きなパッケージを小さなパッケージに分割している最中です。大きなモノリシック パッケージに使用してきたものと同じ API を維持したいと考えています。

パッケージのレイアウトは次のようになります。

会社/
    _models/
        __init__.py
        model1.py
        model2.py
    models.py
    __init__.py

とからモデルをcompany._models/__init__.pyインポートする場所model1.pymodel2.pymodels.pyfrom ._models import *

この構造により、エクスポートされたすべてのモデルに 経由でアクセスできますcompany.models

私がやりたいことは、名前空間パッケージを使用してこれを小さなパッケージに分割できるようにすることですが、同じ API を維持することです。したがって、次のレイアウトに似た2つのパッケージがあります

# パッケージ1
会社/
    _models/
        model1.py
# パッケージ 2
会社/
    _models.
        model2.py

名前空間パッケージに関する私の理解では、2 つのパッケージを重複させることはできますが、__init__.pyファイルに任意のコードを含めることはできないため、import行を含めることはできません。

私がやりたいことはまったく可能ですか?

register(plugin)私が見る1つの可能な解決策は、これらが個別の「パッケージ」ではなく、コアパッケージへのプラグインのようなものであり、プラグインのエクスポートをコアパッケージの名前空間に追加する何らかの機能を持つことです。

4

0 に答える 0