互換リリース演算子(~=)

requirements.txtとpyproject.toml間で~=互換リリース演算子を理解し変換する方法。~=1.4.2と>=1.4.2,<1.5の違いを学びます。

Version Specifiers

詳細な説明

互換リリース演算子~=は、パッチレベルまたはマイナーレベルのアップグレードを許可しながらメジャーバージョンの変更を防ぐバージョン範囲の省略形です。

~=の動作:

  • ~=1.4.2>=1.4.2, ==1.4.*(つまり>=1.4.2, <1.5.0)と同等
  • ~=1.4>=1.4, ==1.*(つまり>=1.4, <2.0)と同等
  • ~=2.0>=2.0, <3.0と同等

requirements.txt:

django-cors-headers~=4.3
djangorestframework~=3.14
celery~=5.3.0
boto3~=1.28

pyproject.tomlに変換:

[project]
dependencies = [
    "django-cors-headers~=4.3",
    "djangorestframework~=3.14",
    "celery~=5.3.0",
    "boto3~=1.28",
]

~=と明示的な範囲の使い分け:

~=演算子はパッケージがセマンティックバージョニング(SemVer)に従っていると信頼できる場合に最適です。バグ修正やマイナーな改善を自動的に許可しながら破壊的変更から保護します。>=4.3,<5.0と手動で書くのに比べ、~=4.3はより簡潔で意味的に明確です。

ただし、すべてのPythonパッケージがSemVerに厳密に従っているわけではありません。マイナーバージョンで破壊的変更を導入した履歴があるパッケージの場合、>=4.3,<4.5のような明示的な範囲がより安全かもしれません。

ユースケース

SemVer互換の依存関係ポリシーに従うエンタープライズPythonアプリケーションなど、requirements全体で~=互換リリース指定子を使用するプロジェクトを変換する。

試してみる — Requirements ↔ Pyproject

フルツールを開く