バージョン固定の依存関係の変換

正確なバージョン固定(==)を持つ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出力)

固定のトレードオフ:

バージョン固定は自動的なセキュリティパッチを防ぎます。dependabotrenovatepip-auditなどのツールで脆弱性を監視することを検討してください。pyproject.tomlではdependenciesに柔軟な範囲を指定し、ロックファイル(pip-toolspdm.lock)で固定された解決を使用するのが一般的です。

ユースケース

プロジェクト近代化の一環として、すべて正確なバージョン固定を持つ本番Dockerデプロイメントのrequirements.txtをpyproject.tomlフォーマットに変換する。

試してみる — Requirements ↔ Pyproject

フルツールを開く