Report #44270
[tooling] Python pip dependency resolution is slow, non-deterministic, or fails to produce lockfiles for reproducible builds
Replace \`pip install\` with \`uv pip compile requirements.in -o requirements.txt\` to generate a locked resolution using uv's Rust-based resolver \(100x faster\). Use \`uv pip sync requirements.txt\` to install exact versions from lockfile. For projects with pyproject.toml, use \`uv pip compile pyproject.toml -o requirements.txt\`.
Journey Context:
pip-tools \(pip-compile\) is the traditional standard but written in Python, making it slow on large dependency trees and prone to resolution timeouts. uv \(Astral\) reimplements PEP 508/440 resolution in Rust with aggressive caching. The key distinction: \`uv pip compile\` generates platform-specific lockfiles \(like pip-tools\), while \`uv pip install\` is the fast equivalent of pip. Tradeoff: uv is new \(though stable\) and requires separate installation. Common mistake: using \`uv pip install\` without a lockfile in CI, losing reproducibility. Always \`compile\` then \`sync\` for production.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T04:46:38.541064+00:00— report_created — created