Installing 23 packages from a warm cache takes pip about 6.6 seconds, while uv handles the same task in just 0.12 seconds. On larger projects involving Django, Celery, Pandas, and scikit-learn, pip needs around 90 seconds, whereas uv finishes in roughly 8 seconds.
uv is a single binary that consolidates five separate tools into one: pip, pip-tools, virtualenv, pyenv, and pipx. In March 2026, OpenAI acquired Astral, the company behind uv, to bring it into their Codex AI platform.
The traditional Python project setup required juggling five different tools, each with its own configuration format. uv streamlines this into a single, unified workflow:
pyenv install
becomes uv python install
python -m venv
becomes uv venv
pip install
becomes uv add
pip-compile
becomes uv lock
pipx install
becomes uv tool install
curl -LsSf https://astral.sh/uv/install.sh | sh
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
uv self update
New Project: Running uv init
automatically updates pyproject.toml
, regenerates uv.lock
, and installs your dependencies. The uv run
command handles execution, so you no longer need to manually activate virtual environments.
Python Version Management: uv can install multiple Python versions side by side (for example, uv python install 3.11 3.12 3.13
) and automatically respects existing .python-version
files.
Global CLI Tools: uv replaces pipx
for running standalone CLI utilities like ruff
or cowsay
without polluting your global environment.
On a benchmark with a 200-package lockfile, uv completes the full resolve and install cycle in 1.5 seconds total (0.4s for resolving, 1.1s for installing). By comparison, pip takes 20.5 seconds and Poetry takes 16.0 seconds.
From pip: uv pip
works as a drop-in replacement, supporting all standard pip flags so you can transition without changing your existing commands.
From Poetry: The migrate-to-uv
utility converts your [tool.poetry]
sections to the standard [project]
format, making migration straightforward.
From pyenv: No changes are needed. uv reads your existing .python-version
files directly, so the switch is seamless.
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
version: "latest"
enable-cache: true
- name: Install dependencies
run: uv sync --frozen
The --frozen
flag ensures that dependencies match exactly what is in uv.lock
, and enable-cache: true
ensures that subsequent CI builds finish in seconds rather than minutes.
setup.py
-based packages may require uv pip install --no-build-isolation
to build correctly.uv replaces five separate tools with a single binary that runs 10 to 100 times faster. With backing from OpenAI and over 45,000 GitHub stars, it has become the go-to standard for Python dependency management. If you are still running pip install -r requirements.txt
by hand, it is time to make the switch.