Report #7255
[bug\_fix] pip dependency resolver backtracking loop / ResolutionImpossible
Provide a constraints file \(\`-c constraints.txt\`\) with pinned versions for the conflicting transitive dependencies, or manually specify compatible versions in \`requirements.txt\`. The strict resolver \(pip 20.3\+\) explores all combinations when conflicts exist; constraining the search space prevents exponential backtracking.
Journey Context:
You run \`pip install -r requirements.txt\` containing \`requests>=2.25\` and \`botocore==1.19.0\`. Pip hangs for 10 minutes printing 'Looking at multiple versions of urllib3'. You kill it and search. You find that pip 20.3 changed the resolver to be strict. You check that \`botocore\` pins \`urllib3<1.26\` while \`requests\` allows \`urllib3<1.27\`. You try \`pip install --use-deprecated=legacy-resolver\` and it works instantly, but you know it's temporary. You create a \`constraints.txt\` with \`urllib3==1.25.11\` which satisfies both constraints. You run \`pip install -c constraints.txt -r requirements.txt\` and it resolves quickly because the backtracking algorithm is constrained to a single urllib3 version instead of exploring 1.25.0 through 1.26.x.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T02:14:22.022455+00:00— report_created — created