データサイエンスプロジェクトの依存関係

NumPy、Pandas、scikit-learn、Jupyterを含むデータサイエンスプロジェクトのrequirements.txtを適切なバージョン制約付きでpyproject.tomlフォーマットに変換する方法。

Real-World Projects

詳細な説明

データサイエンスプロジェクトは、厳格なバージョン互換性要件を持つパッケージによる複雑な依存関係ツリーを持つことがよくあります。

データサイエンスrequirements.txt:

numpy>=1.24,<2.0
pandas>=2.0
scikit-learn>=1.3
matplotlib>=3.8
torch>=2.1 ; sys_platform != "win32"
jupyterlab>=4.0

pyproject.tomlに変換:

[project]
name = "my-ml-project"
version = "0.1.0"
requires-python = ">=3.10"

dependencies = [
    "numpy>=1.24,<2.0",
    "pandas>=2.0",
    "scikit-learn>=1.3",
    "matplotlib>=3.8",
]

[project.optional-dependencies]
gpu = [
    "torch>=2.1",
]
notebook = [
    "jupyterlab>=4.0",
]

データサイエンスのパッケージング考慮事項:

  1. NumPy 2.0の境界:多くのパッケージがNumPy 2.0のサポートに時間が必要なため、<2.0の上限が一般的
  2. GPUパッケージ:PyTorchとCUDA依存関係は大きくプラットフォーム固有のため、オプショナルグループに分離されることが多い
  3. オプショナルグループのJupyter:ノートブックツールは開発支援であり、ランタイム依存関係ではない

pyproject.tomlフォーマットにより、コア分析ライブラリをオプションのGPUやノートブック依存関係から自然に分離でき、本番デプロイメントのインストール時間を削減できます。

ユースケース

異なるデプロイメントシナリオのためにコア、GPU、ノートブック依存関係を分離する構造化されたpyproject.tomlに、機械学習プロジェクトのフラットなrequirements.txtを変換する。

試してみる — Requirements ↔ Pyproject

フルツールを開く