pyproject.tomlからrequirements.txtへの逆変換

pyproject.tomlファイルからフラットなrequirements.txtを抽出する方法。Dockerビルド、CIパイプライン、requirements.txtのみをサポートするツールに便利です。

Reverse Conversion

詳細な説明

pyproject.tomlがモダンな標準ですが、requirements.txtを生成する正当な理由はまだあります:Dockerマルチステージビルド、レガシーCIシステム、requirements.txtのみをサポートするデプロイメントプラットフォームなどです。

pyproject.toml入力:

[project]
name = "my-app"
version = "1.0.0"

dependencies = [
    "fastapi>=0.104",
    "uvicorn[standard]>=0.24",
    "pydantic>=2.5",
]

[project.optional-dependencies]
dev = [
    "pytest>=7.4",
    "ruff>=0.1.6",
]

生成されたrequirements.txt:

# Main dependencies
fastapi>=0.104
uvicorn[standard]>=0.24
pydantic>=2.5

# Optional: dev
pytest>=7.4
ruff>=0.1.6

pyproject.tomlからrequirements.txtが必要な場合:

  1. Dockerビルド -- Dockerfileでpip install -r requirements.txtはレイヤーキャッシュの一般的なパターン
  2. Heroku / PaaS -- 一部のプラットフォームはrequirements.txtを自動検出するがpyproject.tomlは未対応
  3. pip-tools -- pip-compile pyproject.tomlでロックされたrequirements.txtを生成
  4. レガシーCI -- 古いJenkinsやTeamCityセットアップはrequirements.txtを期待する場合がある

ユースケース

ビルダーステージでpip install -rを使用するDockerマルチステージビルドで使用するために、pyproject.tomlからrequirements.txtを抽出する。

試してみる — Requirements ↔ Pyproject

フルツールを開く