[Conda] Error: UnsatisfiableError — incompatible specifications — How to Fix It
Summary
The Conda error UnsatisfiableError: The following specifications were found to be incompatible means that Conda’s dependency solver cannot find a set of package versions that work together. This usually happens when version pins conflict, when mixing incompatible channels, or when packages for your OS or Python version don’t exist. The fix is to relax version constraints, update Conda, use consistent channels, and rebuild the environment cleanly.
Context
When Conda installs or updates packages, it resolves all dependencies recursively across configured channels. If even one dependency can’t match version constraints for your platform, Conda throws an UnsatisfiableError. This often happens in complex environments with strict pins (like numpy=1.21.0 or python=3.6), or when combining packages from defaults and conda-forge, which may use different build stacks (e.g., compilers, GLIBC versions). It can also appear if metadata is outdated or when certain versions simply don’t exist for your OS.
Probable Cause
- Conflicting dependency versions between installed or requested packages.
- Overly strict version pins in an environment file or install command.
- Mixed channel builds causing dependency mismatches (e.g., defaults vs conda-forge).
- Outdated Conda metadata or solver cache.
- Platform or Python version mismatch — requested package not built for your system.
Quick Fix
Use these steps to identify and resolve dependency conflicts:
- Read the full error output carefully — Conda lists the specific packages in conflict.
- Check your system info and Python version:
conda info
- Try installing packages one by one to isolate the conflict:
conda install numpy
conda install pandas
- If using an environment YAML, relax strict pins by removing fixed versions (e.g., change
numpy=1.21.0→numpy). - Update Conda and refresh metadata:
conda update conda
conda update --all
- Check channel configuration and enforce consistent priority:
conda config --show channels
conda config --set channel_priority strict
- Add
conda-forgeif not already present — many packages rely on it:
conda config --add channels conda-forge
- If the issue persists, recreate the environment from scratch:
conda create -n clean_env python=3.11
Full Example
A user tries to install multiple packages:
conda install pandas tensorflow scikit-learn
and receives:
UnsatisfiableError: The following specifications were found to be incompatible:
- python=3.6
- tensorflow=2.10
TensorFlow 2.10 requires Python ≥3.7, so Conda can’t satisfy both constraints. The solution is to relax the Python version:
conda create -n ml_env python=3.9 pandas tensorflow scikit-learn
If conflicts persist, adding the conda-forge channel and enforcing strict priority often resolves mismatched builds:
conda config --add channels conda-forge
conda config --set channel_priority strict
conda create -n ml_env python=3.9 pandas tensorflow scikit-learn
Pitfalls & Debug
- Symptom: Environment fails to create repeatedly → Fix: Remove strict pins and let Conda auto-resolve versions.
- Symptom: Solver hangs indefinitely → Fix: Use
mambafor faster resolution (mamba install ...). - Symptom: Conflicts only on Linux/Windows → Fix: Some packages are OS-specific; adjust environment YAML accordingly.
- Symptom: “PackagesNotFoundError” combined with “UnsatisfiableError” → Fix: Package version doesn’t exist for your platform.
- Symptom: Multiple channels with different builds → Fix: Use consistent channel order and strict priority.
Validation & Next Steps
After adjustments, confirm which versions are available for your platform:
conda search
Check current environment state:
conda list
conda info
If problems persist, export the environment, review dependency versions, or use mamba for cleaner conflict resolution.
Sources
Anaconda Documentation — Troubleshooting Conda