Python's pip and uv

pip 21,050 installs packages from PyPI 2,431 into one environment, usually a virtual environment (python3 -m venv) whose single site-packages folder holds one version of each package. pip has no lockfile; teams pin with pip freeze > requirements.txt. uv 90,229 (github.com/astral-sh/uv (https://github.com/astral-sh/uv 90,229 ), MIT or Apache-2.0), written in Rust by Astral, replaces pip, venv, pip-tools and pyenv with one binary and adds a cross-platform lockfile, uv.lock. OpenAI 86 agreed in March 2026 to acquire Astral and says the tools stay open source. Install it with curl 3,008 -LsSf https://astral.sh/uv/install.sh 24,828 | sh (0.12.19 here).

A uv project with a lockfileShell
cd ~/v5-ch1 && uv init -q py-demo && cd py-demo
uv add -q requests
uv run python -c 'import requests; print(requests.__version__)'
grep -A2 '^name = "requests"' uv.lock
Output
2.34.2
name = "requests"
version = "2.34.2"
source = { registry = "https://pypi.org/simple" }

uv add wrote the range into pyproject.toml, locked it in uv.lock, created .venv and installed into it, like npm 2,036 install <pkg>. With empty caches on this shared machine, installing Flask 15,439 took pip 3.3 seconds and uv 1.3; from uv's warm cache, which it links from as pnpm 69,400 does, 0.03 seconds.