Series

uv: the 2026 Python toolchain

A six-part series on uv — why it replaces pip, venv, pyenv, pipx, and pip-tools; how to start a new Python project in 2026; and a pragmatic migration path that keeps requirements.txt where it earns its keep.

6 parts · first published

uv: the 2026 Python toolchain
  1. 01

    Why uv Exists: The Pre-uv Python Tooling Mess, and What Astral Consolidated

    Before uv, a working Python project needed five tools and a working knowledge of how they fail at the seams. uv collapsed them into one Rust binary because the seams were the problem.

    · 8 min read
  2. 02

    uv vs pip + venv + pyenv: speed, lockfiles, and the death of `source activate`

    Three axes where uv wins and they compound: raw speed from a Rust resolver and a global hardlink cache, a real lockfile instead of a pip freeze snapshot, and a workflow that finally retires source .venv/bin/activate.

    · 7 min read
  3. 03

    Starting a new Python project in 2026 with uv

    Six commands, five files, zero `source activate`. A walkthrough from `uv init` to a project that runs tests, ships a CLI, and is ready to dockerize.

    · 7 min read
  4. 04

    Migrating to uv from pip + venv + requirements.txt: a pragmatic path

    You don't have to commit to a full migration to benefit from uv. The pip compatibility layer is a zero-effort speedup. Move source-of-truth to pyproject.toml only when it earns its keep.

    · 6 min read
  5. 05

    `uv tool` and Single-File Scripts: pipx and Shebang-Python, Replaced

    Two uv features outside project management — uv tool for global CLIs and PEP 723 inline-deps for single-file scripts — quietly close out the last reasons to reach for pip or pipx.

    · 8 min read
  6. 06

    uv in Docker and CI: lockfile-driven builds that actually cache

    Two patterns — multi-stage Docker with uv sync --frozen and GitHub Actions with setup-uv — give you reproducible, fast Python builds with almost no boilerplate.

    · 7 min read