uv: An extremely fast Python package and project manager, written in Rust
Performance and Overall Reception
- Many users describe uv as “confusingly fast” compared to pip, poetry, and pipenv; first runs often feel like nothing happened because they complete almost instantly.
- Reported wins include: CI pipelines dropping by ~1 minute, Docker dependency installs going from tens of seconds to a few seconds, and making iteration on large dependency graphs feasible again.
- Several people who were long‑time pip/venv, poetry, or conda users say they’ve switched “for everything” and won’t go back, especially in ML and data‑science workflows.
Features and Workflows People Like
uv runanduv addplus automatic venv management remove most explicit virtualenv handling; “just works” is a recurring phrase.- PEP 723 support and
--scriptshebang patterns are heavily praised for single-file tools and “one‑shot” scripts; people use them with notebooks, app‑like scripts, and LLM‑generated tools. uvx/uv toolis appreciated as a faster, simpler replacement for pipx, though one user calls it a “foot‑gun” due to confusing behavior when plugins/deps aren’t specified correctly.- Good support for pyproject.toml, lockfiles, and multiple interpreters makes it attractive for Docker, shared servers, and lab environments.
Why It’s Fast (As Discussed)
- Speed is attributed less to “Rust magic” and more to:
- Smarter dependency resolution (SAT / PubGrub‑style solver).
- Aggressive caching plus hardlinks/CoW so multiple envs share unpacked wheels.
- Downloading only ZIP metadata via HTTP range requests before fetching full artifacts.
- Binary, zero‑copy metadata formats and micro‑optimizations.
- There’s debate over how much is language vs. algorithms; consensus: Python tools could adopt some of these tricks but likely won’t reach the same speed envelope.
Ecosystem Fit and Comparisons
- uv mostly follows modern Python packaging PEPs and venv semantics, so it’s a drop‑in for many pip workflows and interoperates with other tools.
- Some see uv as “just” a performance upgrade; others emphasize that hiding venv details and unifying workflows (build, publish, scripts, tools) is equally important.
- Comparisons arise with poetry, pip‑tools, conda/micromamba, pixi, pants, mise, and Docker; several people now pair uv with conda/micromamba only when non‑PyPI or system‑level binaries are needed.
Concerns, Limitations, and Rough Edges
- Missing or awkward pieces called out:
- No simple “bump everything in pyproject.toml” command yet (workarounds and third‑party
uv-bumpexist). - Desire for better first‑time docs that don’t assume familiarity with pip/old tools.
- Centralized venv storage still incomplete; some rely on env vars and wrapper scripts.
- Sticky
--no-binarysemantics: environment variable and pyproject settings exist, but one user argues this should be more central and explicit. - Reports of too‑aggressive parallel downloads on very small machines and running out of file descriptors on large projects.
- No simple “bump everything in pyproject.toml” command yet (workarounds and third‑party
- A few find uv’s single global dependency graph for workspaces risky (easy to create undeclared cross‑package deps), preferring more segmented approaches for complex multi‑package repos.
Business Model and Trust
- Astral is VC‑funded and currently pre‑revenue; stated strategy (per linked comment) is to keep core tools free/OSS and sell complementary enterprise offerings (e.g., private registries).
- Some worry about ecosystem “capture” and eventual lock‑in or per‑seat pricing; others point to the Apache/MIT licensing and note that forking or switching back to pip/other tools would remain possible.