[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:

  1. Read the full error output carefully — Conda lists the specific packages in conflict.
  2. Check your system info and Python version:
conda info
  1. Try installing packages one by one to isolate the conflict:
conda install numpy
conda install pandas
  1. If using an environment YAML, relax strict pins by removing fixed versions (e.g., change numpy=1.21.0numpy).
  2. Update Conda and refresh metadata:
conda update conda
conda update --all
  1. Check channel configuration and enforce consistent priority:
conda config --show channels
conda config --set channel_priority strict
  1. Add conda-forge if not already present — many packages rely on it:
conda config --add channels conda-forge
  1. 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 mamba for 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

Labels: Tool/Conda, OS/Windows-macOS-Linux, Topic/Dependency-Conflict