互換リリース演算子(~=)
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全体で~=互換リリース指定子を使用するプロジェクトを変換する。