バージョン範囲指定子(>=、<、!=)

>=1.0,<2.0のような複合バージョン範囲を持つrequirements.txtをpyproject.tomlに変換する方法。すべてのPEP 440バージョン指定子とそのセマンティクスを学びます。

Version Specifiers

詳細な説明

バージョン範囲を使用すると、柔軟な依存関係の境界を指定できます。PEP 440はカンマで組み合わせて複合指定子を作成できるいくつかの比較演算子を定義しています。

範囲指定のrequirements.txt:

django>=4.2,<5.0
sqlalchemy>=2.0,!=2.0.0
celery>=5.3,<6
redis>=4.5
pydantic>=2.0,<3.0

pyproject.tomlに変換:

[project]
dependencies = [
    "django>=4.2,<5.0",
    "sqlalchemy>=2.0,!=2.0.0",
    "celery>=5.3,<6",
    "redis>=4.5",
    "pydantic>=2.0,<3.0",
]

PEP 440バージョン指定子リファレンス:

演算子 意味
== 完全一致 django==4.2.8
>= 最小バージョン flask>=3.0
<= 最大バージョン numpy<=1.26
!= バージョン除外 sqlalchemy!=2.0.0
~= 互換リリース requests~=2.31
> より大きい click>8.0
< より小さい django<5.0

複合指定子は複数の演算子をカンマで組み合わせます。例えば、>=4.2,<5.0は「4.2以上5.0未満」を意味します。これはメジャーバージョン固定の最も一般的なパターンです。

!=演算子は既知のバグがあるリリースを除外するのに便利です。上の例ではsqlalchemy>=2.0,!=2.0.0は初期の2.0.0リリース(既知の問題あり)をスキップし、それ以降のすべての2.xリリースを受け入れます。

ユースケース

複数の環境やPythonバージョン間の互換性を確保するために柔軟なバージョン範囲を使用するライブラリの依存関係仕様を変換する。

試してみる — Requirements ↔ Pyproject

フルツールを開く