pip is slow
pip ships with Python and remains the de facto standard, but has recognised limits:
- Serial download and install, not parallel
- Slow resolver (inefficient backtracking)
- No native lock file (requires pip-tools)
- Separate virtual env (venv/virtualenv)
- Separate Python version management (pyenv)
UV, released by Astral on 15 February 2024, responds by unifying everything into a single Rust binary. Apache 2.0 or MIT dual licence.
What UV does
- Package install 10-100x faster than pip (parallelism, deduplicated global cache)
- Deterministic
uv.locklock file - Internally managed virtual env
- Python version management —
uv python install 3.12without pyenv - Script execution —
uv run script.pycreates temporary env - Tool management —
uv tool install rufflike pipx - pip compatibility —
uv pip install ...as drop-in for existing scripts
Pyproject.toml
UV natively supports pyproject.toml (PEP 621):
[project]
name = "myapp"
version = "0.1.0"
dependencies = [
"django>=4.2",
"requests>=2.31",
]
[tool.uv]
dev-dependencies = [
"pytest>=7.4",
"ruff",
]
uv sync command installs everything in a reproducible environment.
Adoption
UV has been very quickly embraced by the 2024 Python community:
- FastAPI, Django, Polars — recommendation in docs
- CI/CD — drastic install speed-up in pipelines
- Container builds — lighter and faster layers
- Python monorepos — native workspaces
By 2024-2025 UV represents the de facto successor of Poetry/pipenv for new projects, with Poetry remaining advantageous for existing projects and transitional compatibility.
Astral strategy
UV completes the Astral trilogy: Ruff (lint/format) + UV (packaging) + future ty (type check) → entire Python dev pipeline in Rust.
In the Italian context
Very rapid adoption in Italian Python teams 2024-2025.
References: UV (15 February 2024). Astral. Apache 2.0/MIT licence. Rust language. Drop-in replacement pip + pip-tools + virtualenv + pyenv. Proposed successor of Poetry/pipenv. Pyproject.toml (PEP 621).
