pip: Could not find a version that satisfies the requirement
pip searched PyPI (or your index) and found no file that matches both the package name and your Python/platform constraints. Usually a typo, a Python that is too old or too new, or the wrong index URL.
The full error
ERROR: Could not find a version that satisfies the requirement some-package==1.2.3
(from versions: none)
ERROR: No matching distribution found for some-package==1.2.3
(from versions: none) is the strong clue: pip saw zero candidate files. If it lists versions but still fails, your specifier or environment tags excluded all of them.
Fixes in order
- Confirm the PyPI name — Import name ≠ distribution name (
PILvsPillow,cv2vsopencv-python,yamlvsPyYAML). Search the exact project on pypi.org. - Python version — Many packages dropped 3.8 or do not ship 3.13 wheels yet.
python -Vand the package’s “Requires: Python >=3.x” must overlap. Use a matching venv. - Platform wheels — Apple Silicon (
arm64), musllinux (Alpine), or Windows may lack a wheel while manylinux x86_64 has one. Building from sdist then needs compilers; prefer a platform that has wheels or a conda/binary build. - Upgrade pip / packaging — Old pip does not understand newer wheel tags:
python -m pip install --upgrade pip setuptools wheel - Version pin too tight —
==1.2.3may never have been published, or was yanked. Relax to>=1.2,<2or omit the pin while debugging. - Wrong or unreachable index — Corporate mirrors,
PIP_INDEX_URL, or Artifactory typos yieldfrom versions: none. Test with the public index:python -m pip install some-package -i https://pypi.org/simple --verbose - Extras / markers —
package[extra]still needs the base distribution. Environment markers in requirements.txt can skip every line on your OS.
Verbose truth
python -m pip install some-package==1.2.3 -v 2>&1 | tail -50
# Look for: Looking in indexes: …
# Skipping link … (requires-python / wheel tag mismatch)
Not the same as…
- externally-managed-environment — OS Python blocks system installs (PEP 668); use a venv.
- ModuleNotFoundError — install succeeded into a different interpreter than the one that runs the code.
- npm ERESOLVE — same class of “solver found nothing”, different ecosystem.
Related
metadata-generation-failed · Failed building wheel · ResolutionImpossible · Microsoft Visual C++ 14.0 is required · Python venv not activating · externally-managed-environment · ModuleNotFoundError · npm ENOENT · .env files and secrets
Questions
What does Could not find a version that satisfies the requirement mean?
pip found no distribution file matching that requirement for your Python and platform on the configured index.
Why does it say from versions: none?
The index returned no files for that project name (typo, private package missing, or wrong index URL).
It installs on my laptop but not in CI.
Different Python version, Alpine vs Debian (musl vs glibc wheels), or CI uses a mirror that lags/omits packages.
Do I need --break-system-packages?
No for this error. That flag is about PEP 668 externally-managed installs, not missing distributions.
Pillow vs PIL?
Install Pillow (the package name on PyPI). import PIL is the import name after install.
How do I see why a wheel was skipped?
Run pip install -v and read Skipping link lines for requires-python and platform tag mismatches.
Published · updated .