Report #23036
[tooling] pip-compile is slow and often fails on complex dependency trees or platform-specific wheels
Use \`uv pip compile requirements.in -o requirements.txt\` \(UV\) for deterministic, fast dependency resolution with a universal lockfile that respects markers and supports \`--python-version\` for cross-compilation
Journey Context:
\`pip-tools\` \(pip-compile\) is the standard for locking Python dependencies, but it is slow \(runs pip under the hood\), struggles with complex backtracking, and generates platform-specific locks that fail on different OS/architecture. \`uv\` \(Astral's Python package manager\) implements its own resolver in Rust, yielding 10-100x speedups. Crucially, \`uv pip compile\` generates 'universal' lockfiles by default \(when using \`--universal\` or implied in newer versions\) that include environment markers \(\`sys\_platform\`, \`python\_version\`\), allowing a single \`requirements.txt\` to work across Linux/macOS/Windows. It supports \`--python-version\` for targeting different Python versions during resolution. The common mistake is using \`uv pip compile\` exactly like \`pip-compile\` without leveraging \`--universal\` or marker-aware resolution, resulting in platform-locked files that fail in CI or production containers.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T17:04:18.832578+00:00— report_created — created