現在、大きなパッケージを小さなパッケージに分割している最中です。大きなモノリシック パッケージに使用してきたものと同じ API を維持したいと考えています。
パッケージのレイアウトは次のようになります。
会社/ _models/ __init__.py model1.py model2.py models.py __init__.py
とからモデルをcompany._models/__init__.py
インポートする場所model1.py
model2.py
models.py
from ._models import *
この構造により、エクスポートされたすべてのモデルに 経由でアクセスできますcompany.models
。
私がやりたいことは、名前空間パッケージを使用してこれを小さなパッケージに分割できるようにすることですが、同じ API を維持することです。したがって、次のレイアウトに似た2つのパッケージがあります
# パッケージ1 会社/ _models/ model1.py # パッケージ 2 会社/ _models. model2.py
名前空間パッケージに関する私の理解では、2 つのパッケージを重複させることはできますが、__init__.py
ファイルに任意のコードを含めることはできないため、import
行を含めることはできません。
私がやりたいことはまったく可能ですか?
register(plugin)
私が見る1つの可能な解決策は、これらが個別の「パッケージ」ではなく、コアパッケージへのプラグインのようなものであり、プラグインのエクスポートをコアパッケージの名前空間に追加する何らかの機能を持つことです。