web-dev-qa-db-ja.com

pythonモジュールを同じプロジェクトにまとめたときに個別にパッケージ化する方法は?

Java=およびMavenとPythonの本当の初心者)の方が経験が豊富なので、何が可能で何ができないかについては、私には本当にわかりません。

Javaでは、Mavenを使用して、ファイルの依存関係バージョンを管理できます(a pom parent /アグリゲーターモジュール)。次に、サブのpom.xmlで再宣言します-pomの親によって管理されているバージョンを省略しながら、必要な依存関係をモジュール化します。このようにして、サブモジュールを物理的に個別に配布(例:マシン内のすべてのモジュール)でき、すべてのモジュールは必要な依存関係、つまり独自のpomファイルで定義されているライブラリのみをパッケージ化します。

ここでPythonに戻ります。現在、setup.pyファイルを使用しています。このファイルは、私の理解ではルートモジュールにあるはずです。ただし、モジュール全体を1つのライブラリとしてパッケージ化します。

モジュールとその依存関係をより適切に管理し、すべての(選択された)モジュールを、独自の必要なライブラリーを持つ独立したパッケージとして個別にデプロイできる方法はありますか?個別にパッケージ化するモジュールを選択できるようにしたいのですが、__init__.pyを含むすべてのフォルダを個別にパッケージ化したくありません。

現在、私は依存関係を管理するためにPipenvを使用していますが、上記で説明した設計を満たさない場合は、それを削除する準備ができています。

ありがとうございました

4
Farah

あなたが望んでいることを正確に実行するものは何もありません(少なくとも私が知る限り)。 pythonでは、プロジェクトまたはライブラリの依存関係を管理する方法は、requirements.txtと仮想環境を使用しています。どちらもプロジェクト全体の依存関係を管理します。

個々のモジュールをプロジェクトから分離するには、それらを個別のプロジェクトとして扱い、すべてのプロジェクトで必要なことを行います。 requirements.txtを作成するか、setup.pyを使用してインストールする必要がある場合は、その中に配置します。

したがって、「サブライブラリ」ごとに「分離」して、異なるrequirements.txtまたはsetup.pyを作成します。

フォルダーをスキャンして要件ファイルを自動的に生成するpipreqs(およびおそらく他のライブラリ)と呼ばれるこのライブラリがあります。ライブラリをインストールした直後に、要件ファイルを手動で作成することをお勧めします。

1
Devon Horizon

あなたのpythonコードをパッケージ化するために探しているなら、あなたは poetry を見ることができますが、mavenのようなマルチプロジェクトのビルドは達成できません。

0
Yayati Sule