Skip to main content
Software Version / Package Tools

Python Requirements Version Helper

Test Python version specifiers such as ~=, == and != against real versions, and get a line-by-line explanation of a requirements.txt file.

Test a pip version specifier against a list of versions, or paste a requirements.txt file to get a plain-English explanation of every line.

Test a version specifier

Explain a requirements.txt file

Everything runs in your browser - nothing is sent to PyPI - so you can safely paste private package names.

What Is the Python Requirements Version Helper?

Python packages use PEP 440 versions and specifiers, which differ from npm and Composer: versions look like 1.0rc1, 2.1.post1 or 1!2.0, and operators include ~= (compatible release) and ==1.4.*. This tool applies the same rules as pip's packaging library.

When to Use It

  • Checking whether a specifier allows the version you want before running pip install.
  • Reviewing a requirements file for unpinned or unbounded dependencies.
  • Understanding why pip skipped a prerelease.

How to Use It

  1. Test a specifier: enter something like >=1.4,<2.0 and list versions - each is marked as a match or not.
  2. Explain requirements.txt: paste the file and click Explain Requirements.

Examples

  • ~=2.2 means >=2.2, ==2.*; ~=2.2.0 means >=2.2.0, ==2.2.*.
  • ==3.1.* matches 3.1.0 and 3.1.7 but not 3.2.0.
  • <2.0 does not match 2.0rc1 - prereleases of the bound itself are excluded.

Understanding the Result

Prereleases (a, b, rc, .dev) are excluded unless you tick "Allow prereleases" or the specifier itself names one with ==, >=, <= or ~=. The requirements explanation flags unpinned packages, missing upper bounds, duplicates (using normalized names) and environment markers.

Limitations

PyPI is not queried, so it cannot tell you which versions exist. Environment markers are shown but not evaluated. To generate a requirements file, use the Python Requirements Generator; to check a package name, the Python Package Name Checker.

Frequently Asked Questions

Compatible release. ~=2.2 means >=2.2 and ==2.*; ~=2.2.0 means >=2.2.0 and ==2.2.*.

Prereleases are excluded unless you pass --pre or the specifier explicitly names a prerelease, such as >=2.0b1.

Yes. Package names are case-insensitive and treat -, _ and . as equal, which is how the tool detects duplicates.
Share this tool: