depwhy

Explains Python dependency conflicts in plain English and suggests ranked fixes.

Dependency conflicts in Python are notoriously confusing. pip will tell you something went wrong, but rarely why or how to fix it. depwhy reads your requirements file, resolves the full dependency graph, and returns a clear explanation of every conflict along with actionable solutions ranked by risk.

terminal

$ depwhy requirements.txt

2 conflict(s) found

urllib3

Problem: requests==2.28.0 requires urllib3>=1.21.1,<1.27, but you have urllib3==2.0.0 pinned

Solution: Remove your pin — use urllib3==1.26.18 (latest compatible)

→ pip install urllib3==1.26.18

Alternative: Upgrade requests to >=2.29.0 (loosens urllib3 upper bound)

→ pip install requests==2.29.0

Documentation