Skip to content
Latchkey

uv pip "No solution found" resolver conflict in CI

uv resolved your dependency graph and found no version set that satisfies every constraint. It prints a concise explanation naming the requirements that cannot coexist.

What this error means

uv stops with "x No solution found when resolving dependencies:" followed by a "Because ... and ..., we can conclude" chain identifying the conflict.

pip
x No solution found when resolving dependencies:
  +-> Because only urllib3<2 is available and boto3 depends on urllib3>=2,
      we can conclude that your requirements are unsatisfiable.

Common causes

Two requirements demand incompatible ranges

uv reports the exact "Because" chain: one constraint caps a shared dependency below what another requires.

A pinned version excludes a needed transitive bump

A hard pin in your project blocks the upgrade a dependency needs, leaving no satisfiable set.

How to fix it

Follow the "Because" chain and relax a constraint

  1. Read uv's conclusion to see which two constraints collide.
  2. Loosen the over-tight pin or upgrade the capping package.
  3. Re-run uv pip compile to confirm a solution exists.
Terminal
uv pip compile requirements.in -o requirements.txt

Allow prereleases only if required

If the only compatible version is a prerelease, opt in explicitly rather than pinning around it.

Terminal
uv pip install --prerelease=allow -r requirements.in

How to prevent it

  • Compile a uv lockfile so conflicts surface before CI.
  • Prefer ranges over hard pins in your input requirements.
  • Upgrade related packages together to keep shared deps compatible.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →