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が必要な場合:
- Dockerビルド -- Dockerfileで
pip install -r requirements.txtはレイヤーキャッシュの一般的なパターン - Heroku / PaaS -- 一部のプラットフォームは
requirements.txtを自動検出するがpyproject.tomlは未対応 - pip-tools --
pip-compile pyproject.tomlでロックされたrequirements.txtを生成 - レガシーCI -- 古いJenkinsやTeamCityセットアップは
requirements.txtを期待する場合がある
ユースケース
ビルダーステージでpip install -rを使用するDockerマルチステージビルドで使用するために、pyproject.tomlからrequirements.txtを抽出する。