pip: "Could Not Find a Version That Satisfies the Requirement"

pip couldn't find ANY version of that package for your interpreter. It's almost never 'the package doesn't exist': typo, wrong index, unsupported Python version, or an offline/filtered network.

What you'll see

Root causes

Name typo or wrong index

Package names are exact (no 'py' prefixes — bs4 vs beautifulsoup4). '(from versions: none)' = the index pip reached has no such name: check the right index for private packages (index-url/extra-index-url).

Python version unsupported by all available wheels/sdists

Old Python (3.6) or bleeding-edge (3.13 pre-support): releases exist but none match your interpreter — pip filters them all out. python --version vs the package's classifiers decides.

Network/proxy filtering PyPI

Corporate proxies, firewalled CI, or pip.conf pointing at a mirror that lacks the package. pip config list + curl -sI https://pypi.org exposes it.

Fix it

  1. Verify the exact name on the index
    pip index versions <pkg> 2>/dev/null || pip install <pkg>==99999   # error lists real versions (or confirms none exist)
  2. Check which index and python pip is actually using
    pip config list ; python --version ; pip --version
  3. Private packages: point at the right index
    pip install <pkg> --index-url https://pypi.example.com/simple/   # or env PIP_INDEX_URL in CI
  4. Verify network reachability of PyPI
    curl -sI --max-time 5 https://pypi.org/simple/ | head -1

Field note

'(from versions: none)' vs '(from versions: 1.0, 1.2)' is the key read: none = wrong index/typo/network; a version list = your constraints/interpreter exclude them all. requirements.txt typos survive for ages because installs are cached — pin names exactly as they appear on PyPI.

Common questions

The package definitely exists on PyPI. Why can't pip find it?

Then it's the interpreter or the index: no release supports your Python version (older or newer than the wheels), or pip is pointed at a different index (pip config list). The 'from versions' clause tells you which.

How do I check what versions pip can see?

pip install 'pkg==nonexistent-version' — the error enumerates every version visible to your pip for that interpreter. Empty list confirms the index/name problem.

Ship it right the first time

Our most-documented failures, packaged as ready-to-ship starter kits: Docker, Kubernetes, and Terraform.

Browse the template store →

One-time. Yours to modify. Instant download from the NinjaOps template store.