バージョン固定の依存関係の変換
正確なバージョン固定(==)を持つrequirements.txtをpyproject.tomlフォーマットに変換する方法。バージョン固定を使用するタイミングとフォーマット間の変換方法を理解します。
Version Specifiers
詳細な説明
==演算子を使用したバージョン固定は、最も厳格なバージョン指定形式です。正確なパッケージバージョンにロックすることで再現可能なビルドを保証します。本番デプロイメントやDockerコンテナで一般的です。
固定されたrequirements.txt:
django==4.2.8
psycopg2-binary==2.9.9
gunicorn==21.2.0
whitenoise==6.6.0
sentry-sdk==1.39.1
pyproject.tomlに変換:
[project]
dependencies = [
"django==4.2.8",
"psycopg2-binary==2.9.9",
"gunicorn==21.2.0",
"whitenoise==6.6.0",
"sentry-sdk==1.39.1",
]
バージョン固定を使用するタイミング:
- 再現性が重要な本番デプロイメント
- 毎回同一のコンテナを生成する必要があるDockerイメージ
- 予期しないアップグレードがテストを壊す可能性があるCI/CDパイプライン
- 正確な解決状態をキャプチャするロックファイル(
pip freeze出力)
固定のトレードオフ:
バージョン固定は自動的なセキュリティパッチを防ぎます。dependabot、renovate、pip-auditなどのツールで脆弱性を監視することを検討してください。pyproject.tomlではdependenciesに柔軟な範囲を指定し、ロックファイル(pip-toolsやpdm.lock)で固定された解決を使用するのが一般的です。
ユースケース
プロジェクト近代化の一環として、すべて正確なバージョン固定を持つ本番Dockerデプロイメントのrequirements.txtをpyproject.tomlフォーマットに変換する。