Report #5661
[bug\_fix] pip dependency resolver backtracking forever or ResolutionImpossible
Remove overly strict version pins in \`requirements.txt\` or \`pyproject.toml\` to allow the resolver to find a compatible set of versions, or use a \`constraints.txt\` file to enforce upper bounds without triggering backtracking, or upgrade/downgrade the requesting packages. Root cause: The new resolver \(pip 20.3\+\) uses a strict SAT-solver approach; if package A requires \`lib<2.0\` and package B requires \`lib>=2.0\`, no solution exists, and the resolver exhaustively explores the dependency tree to prove impossibility.
Journey Context:
Developer adds \`requests==2.25.1\` and \`botocore==1.20.0\` to requirements. Running \`pip install -r requirements.txt\` causes pip to download dozens of versions of \`urllib3\` and \`botocore\`, taking 10 minutes before failing with \`ResolutionImpossible: The conflict is caused by botocore 1.20.0 depending on urllib3<1.27,>=1.25.4 and requests 2.25.1 depending on urllib3<1.27,>=1.21.1\`. The developer tries pinning \`urllib3==1.26.5\`, but the conflict persists because the constraints are incompatible at the solver level. Realizing the strict resolver requires a solvable constraint set, the developer removes the version pins for \`requests\` and \`botocore\`, allowing pip to select \`botocore\` 1.29.x and \`requests\` 2.28.x which share compatible \`urllib3\` ranges, resolving the graph instantly.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T21:50:04.231061+00:00— report_created — created