uv — Python Packaging, 100x Faster

The Rust-powered package and project manager that replaced pip+venv+pyenv in one tool — installs in seconds, lockfiles by default, reproducibility with no ceremony.

Category Code
Pricing Free
Rating ★★★★★ (5/5)

Overview

uv (from Astral, the Ruff team) collapses Python tooling into one fast binary: environment creation, dependency resolution, Python version management, and lockfiles. Resolution that took pip minutes takes uv seconds, and uv.lock pins your exact environment for anyone who clones the repo.

Why researchers use it

  • Speed you can feel — dependency installs in seconds, not minutes
  • Lockfile by default — uv.lock makes ‘pip install worked yesterday’ extinct
  • One tool — replaces pip, venv, pipx, pyenv, and poetry for most projects

Getting started

  1. Install with the one-line installer from the docs (no Python needed first — uv can install Python too).
  2. In a project: uv init, then uv add numpy pandas — environment and lockfile appear automatically.
  3. Collaborators run uv sync and get your exact environment.

The honest review

Strengths. The rare tool that is simply better along every axis for pure-Python work: faster, stricter, simpler mental model, and drop-in pip compatibility (uv pip …) for gradual adoption.

Limitations. Young (expect occasional edge cases), and it does not manage non-Python binaries — CUDA/GDAL-class dependencies still push you to conda or containers.

When NOT to use this If your stack needs system-level scientific binaries, uv alone won’t save you — pair it with conda-forge or a container. For everything pure-Python, there is no longer a good reason to start a project with bare pip.