Report #97806
[tooling] pip install in CI is slow, non-deterministic, and keeps breaking dependency resolution
Use uv as a drop-in replacement: compile a lockfile with \`uv pip compile requirements.in -o requirements.txt\` and install it deterministically with \`uv pip sync requirements.txt\`. In Docker, copy \`requirements.txt\` first and run \`uv pip install --system --no-cache -r requirements.txt\` to leverage uv's Rust-based resolver.
Journey Context:
pip's resolver is correct but can be slow and silently produce different installs across runs. uv is a reimplementation of pip's interface with a much faster resolver and installer, backed by Astral. The common wrong move is treating uv as experimental—it reached stability and replaced \`pip-tools\` workflows for many teams. The trade-off is ecosystem lock-in to Astral's tooling and slightly different edge-case behavior around editable installs and custom indexes; test your project before switching. For greenfield Python projects, \`uv init\` \+ \`uv run\` is even cleaner than the pip-compat path.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-26T04:44:02.964300+00:00— report_created — created