私はいくつかのサブモジュールを持つプログラムを持っています。サブモジュールを独立して使用できるようにしたいので、他のプログラムでもサブモジュールを使用することができます。しかし、サブモジュールには相互依存関係があり、互いの側面を実行する必要があります。これに対処する最も問題の少ない方法は何ですか?各サブモジュールは、その親のgit submodule
あるPythonでサブモジュールの相互依存関係を処理する方法は?
myapp/
|-- __init__.py
|-- app.py
|-- special_classes
| |-- __init__.py
| `-- tools
| `-- __init__.py
|-- special_functions
| |-- __init__.py
| `-- tools
| `-- __init__.py
`-- tools
|-- __init__.py
|-- classes.py
`-- functions.py
:
は今のところ、私はこのように私のプログラムを構造化しています。
私はそれぞれのサブモジュールを独立して管理し、開発することができ、これらのサブモジュールの1つを新しいプロジェクトに追加するのは、git clone
とgit submodule add
という単純なものです。私は管理された共有コンピューティング環境で働いているため、ユーザー環境管理&のソフトウェアのバージョン管理とインストールが争点となっているため、プログラムを簡単に実行できます。
この例では、3つのサブモジュールがあります。これらのサブモジュールは互いに独立しており、いずれかに変更があるたびに手動で更新する必要があります。サブモジュールの開発を行うのは非常に面倒です。同様に、テストは各サブモジュールで実行され、tools
モジュールのコピーが3つあるため、実行しているユニットテストの数は3倍になりました。
hereなどのさまざまなインポート方法がありますが、これは理想的な解決策ではありません。
正式なPythonパッケージhereを作成する方法を読んだことがありますが、これは大企業のようであり、エンドユーザーが実際にプログラムをインストールして実行するのがはるかに難しくなります。
別の関連する問題は、親で単一のツールを持っており、サブモジュールにインポートするhere
"私はサブモジュールを独立して使用できるようにしたい" - プログラムとは独立して、あるいはお互いに? – jwodder
@jwodder両方。サブモジュールの一部またはすべてを使用するいくつかの他のプログラムもあります。 – user5359531
サブモジュールがお互いに相互依存関係がある場合、相互に独立して使用することはできません。サブモジュールを1つのリポジトリに結合するか、または相互に使用しないように書き直してください。 – jwodder