Uv overtakes pip in CI
Adoption and Overall Impressions
- Many see uv’s rise in CI as unsurprising given long‑standing frustration with Python packaging (pip + venv, pipenv, poetry, conda).
- Users report moving “all projects” or “every repo” to uv after a very short trial because it “just worked” and removed mental overhead around virtualenvs.
- Others remain unconvinced, saying pip/venv (plus pyenv/conda where needed) are “good enough” and speed alone doesn’t justify a switch.
Key Advantages Reported
- Speed & Caching
- Install and resolve steps are dramatically faster than pip/poetry/conda in many workflows, especially CI and multi‑env testing.
- Hard‑link based caching means many venvs can share package files, making new environments almost free in time and disk.
- Integrated Workflow
- Single tool replaces combinations of pyenv + venv + pip + pip‑tools + pipx (and often poetry) for many users.
uv init / add / runflow, auto‑created venvs, and lockfiles make projects feel closer to npm‑style dependency tracking.- Per‑project
.venvlayout anduv runreduce “forgot to activate venv” issues. - Python version selection is built in rather than delegated to external tools.
Limitations, Edge Cases, and Skepticism
- Reported gaps: weak support for air‑gapped systems and non‑local venvs; trouble using pre‑existing venvs; inability (by design) to pull from global distro packages (e.g., Termux); some issues with Azure DevOps feeds and intra‑repo deps in Docker.
- Some container users find uv + venv inside images awkward; others argue it works well with
UV_SYSTEM_PYTHON=1,uv sync, and documented Docker patterns. - One complaint: uv bundles multiple roles (installer, env manager, Python downloader, tool runner) into one binary, seen as philosophically undesirable by some.
- There is concern about reliance on a VC‑funded company, though others note uv/ruff are open source and already very capable.
Python Ecosystem Context
- Discussion revisits Python’s packaging “mess”: age of the ecosystem, historic tools (easy_install, eggs), lack of built‑in dependency management, and sys.modules making multi‑version loading hard.
- Several commenters frame uv as the first tool that finally “gets most of it right” after two decades of incremental, often painful experimentation.