How to fix pkg_resources.VersionConflict: (setuptools X) but (setuptools>=Y) is required in Python

PythonINTERMEDIATEMEDIUMUpdated Dec 7, 2025ยท 126 views

This error occurs when you have conflicting version requirements: one package needs version X.0 of a dependency, but another needs Y.0. Virtual environments and requirements files help resolve this.

Quick fix

Fixes pkg_resources.VersionConflict: (setuptools X) but (setuptools>=Y) is required

pip list
  1. Check dependency tree
  2. Use pip's new resolver (if old pip version)
  3. Install compatible versions
  4. Use requirements.txt with version pinning
python โ€” error
pip list
pkg_resources.VersionConflict: (setuptools X) but (setuptools>=Y) is required

What this error means

The "requires a different version" error means two or more packages you're trying to use have incompatible dependency requirements. For example: - Package A requires: requests>=2.28.0 - Package B requires: requests<2.25.0 - You can't satisfy both requirements simultaneously This happens because: 1. Packages in your project depend on different versions of the same library 2. You're using very old or very new versions of packages together 3. Package maintainers haven't updated version constraints for compatibility Solutions include updating packages, relaxing version constraints, or using different packages that are compatible.

Typical symptoms

  • Package A requires package-b>=1.0, but you have package-b 0.9.0
  • Different packages require incompatible versions of dependencies
  • Works in one virtual environment but not another

Common causes

  1. Conflicting version requirements from multiple dependencies
  2. Old or incompatible package version pinned in requirements.txt
  3. Installing packages in wrong order
  4. Stale pip resolver cache

How to fix "pkg_resources.VersionConflict: (setuptools X) but (setuptools>=Y) is required"

1Check dependency tree

See what versions are installed and required:

bash
pip list

For detailed dependency information:

bash
pip install pipdeptree
pipdeptree
2Use pip's new resolver (if old pip version)

Modern pip has a better dependency resolver:

bash
pip install --upgrade pip
pip install --use-new-resolver package-name
3Install compatible versions

Specify compatible version ranges:

bash
pip install 'package-a>=1.0,<2.0' 'package-b>=2.1,<3.0'

Or let pip resolve automatically:

bash
pip install package-a package-b
4Use requirements.txt with version pinning

Create a requirements.txt with exact versions that work together:

bash
package-a==1.5.2
package-b==2.3.0
package-c==0.1.0

Install from it:

bash
pip install -r requirements.txt
5Start fresh with a new virtual environment

Create a clean environment and install from scratch:

bash
python3 -m venv fresh_env
source fresh_env/bin/activate
pip install package-a package-b

Advanced notes

Use pip freeze > requirements.txt to capture a working environment. For reproducible builds, use poetry or pipenv which handle dependency resolution better than pip with requirements.txt.

Frequently asked questions

What does "pkg_resources.VersionConflict: (setuptools X) but (setuptools>=Y) is r" mean?
The "requires a different version" error means two or more packages you're trying to use have incompatible dependency requirements. 0 - You can't satisfy both requirements simultaneously This happens because: 1. Packages in your project depend on different versions of the same library 2.
How do I fix "pkg_resources.VersionConflict: (setuptools X) but (setuptools>=Y) is r"?
This error occurs when you have conflicting version requirements: one package needs version X.0 of a dependency, but another needs Y.0. Virtual environments and requirements files help resolve this.
What causes "pkg_resources.VersionConflict: (setuptools X) but (setuptools>=Y) is r"?
Conflicting version requirements from multiple dependencies Old or incompatible package version pinned in requirements.txt Installing packages in wrong order
Is the "pkg_resources.VersionConflict: (setuptools X) but (setuptools>=Y) is r" error serious?
It is a medium-severity error โ€” more of a blocker than a risk. The steps above resolve it.

Official resources & further reading