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 / run flow, auto‑created venvs, and lockfiles make projects feel closer to npm‑style dependency tracking.
    • Per‑project .venv layout and uv run reduce “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.