開発用依存関係とオプショナルグループ

requirements-dev.txtの開発、テスト、ドキュメント依存関係をpyproject.tomlのoptional-dependenciesグループに変換する方法を学びます。

Advanced Features

詳細な説明

多くのPythonプロジェクトは依存関係を別ファイルに分割します:本番用のrequirements.txtと開発ツール用のrequirements-dev.txt(またはrequirements-test.txt)。pyproject.tomlでは、これらは[project.optional-dependencies]で名前付きグループとして整理されます。

requirements-dev.txt:

pytest>=7.4
pytest-cov>=4.1
pytest-asyncio>=0.23
ruff>=0.1.6
mypy>=1.7
black>=23.11
pre-commit>=3.5

pyproject.tomlに変換:

[project.optional-dependencies]
dev = [
    "pytest>=7.4",
    "pytest-cov>=4.1",
    "pytest-asyncio>=0.23",
    "ruff>=0.1.6",
    "mypy>=1.7",
    "black>=23.11",
    "pre-commit>=3.5",
]

devメタグループパターンは、devグループが自己参照extras(my-project[test,lint,docs])を使用して他のすべてのオプショングループを参照する一般的な規約です。ユーザーはpip install -e ".[dev]"ですべてをインストールするか、pip install -e ".[test]"でテストツールのみをインストールできます。

このアプローチは、複数のrequirements-*.txtファイルパターンを、各依存関係グループの用途が明確に定義された単一のpyproject.tomlに置き換えます。

ユースケース

別々のrequirements-dev.txt、requirements-test.txt、requirements-docs.txtファイルを、整理されたoptional-dependencyグループを持つ単一のpyproject.tomlに統合する。

試してみる — Requirements ↔ Pyproject

フルツールを開く