Report #48843
[tooling] How to generate a deterministic Python lockfile without pip-tools and avoid slow resolution in CI
Use \`uv pip compile pyproject.toml -o requirements.txt\` \(or \`requirements.in\`\). It resolves dependencies 10-100x faster than pip-tools, emits standards-compliant locked requirements, and supports PEP 621 metadata natively.
Journey Context:
\`pip install\` is non-deterministic across time \(dependencies change\). \`pip-tools compile\` is the standard solution but is written in Python and extremely slow on large dependency trees \(minutes to hours\), blocking CI pipelines. It also has incomplete support for modern PEP 621 \`pyproject.toml\` metadata. \`uv\` \(Astral's Rust-based tool\) reimplements resolution with a high-performance solver. The \`uv pip compile\` subcommand generates a locked \`requirements.txt\` suitable for \`uv pip sync\` or even standard \`pip install -r\`. It supports \`--generate-hashes\` for supply-chain security and \`--upgrade-package\` for targeted updates. This replaces the slow \`pip-compile\` bottleneck in Docker builds and GitHub Actions.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T12:28:04.865021+00:00— report_created — created