私はいくつかの独立したモジュールを使用するプロジェクトを開発していますが、すべて同じプロジェクトに関連しています。
ただし、私はこの選択に直面しています。アンダースコア付きのモジュール名と名前空間です。
たとえば、次のツリーがあります。
Foo
|-Bar1
| |-Bar2
|-Foo1
| |-Foo2
| |-Foo3
たとえば、Foo3はBar2に依存していますが、Foo2とBar2はスタンドアロンであるとします。
パフォーマンス、パッケージ化のしやすさ(pypiへの変換)およびコードの可読性に関するベストプラクティスは何ですか?
_
を使用:Foo_Bar_Bar1
、Foo_Foo1_Foo2
およびFoo_Foo1_Foo3
または名前空間の使用:Foo.Bar.Bar1
、Foo.Foo1.Foo2
、およびFoo.Foo1.Foo3
モジュールと名前空間を使用する方が美しいですが、pipでは、独立したパッケージが別の場所に保存されます。 pypiからインストールされたパッケージと同じ名前空間を使用する編集可能なパッケージを組み合わせるとバグがあることも読みました
参照: https://github.com/pypa/pip/issues/
また、名前空間に関する別の問題は、Fooがコンテンツを持つことができず、パッケージになることができないことです(名前空間モジュールには、名前空間宣言のみが含まれている必要があります): https://pythonhosted.org/setuptools /setuptools.html#namespace-packages (または私は理解していませんでした)
ここではパフォーマンスについては気にしませんが、ユーザビリティについては気にします。
モジュールはPythonプログラムの存続期間中に一度だけロードされます。ネストされたモジュールを含むモジュールおよびパッケージ内の要素の参照は実質的に無料です。ここではパフォーマンスは重要ではありません。
モジュールを使用して、プロジェクトを論理ユニットにグループ化します。概念的に密接に関連しているものが名前空間内にクラスター化されていると、読みやすく、保守しやすくなります。