Report #68662
[tooling] pip dependency resolution is slow or produces non-deterministic installs in CI
Use \`uv pip compile requirements.in -o requirements.txt\` to generate a locked manifest, then \`uv pip sync requirements.txt\` to install exactly that set. Pin \`uv\` version in CI for reproducibility.
Journey Context:
\`pip install -r requirements.txt\` can upgrade/downgrade packages unpredictably if versions are unpinned, and \`pip\` dependency resolution is notoriously slow \(exponential backtracking\). While \`pip-tools\` solved the lockfile problem, it remains slow. \`uv pip compile\` \(compatible with \`pip-tools\` syntax\) is orders of magnitude faster \(Rust-based\) and generates a locked \`requirements.txt\` with optional hashes. \`uv pip sync\` is distinct from \`install\`: it ensures the environment exactly matches the lockfile, removing stray packages that are not in the lockfile, ensuring CI reproducibility.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T21:44:12.459290+00:00— report_created — created