# Why You Should Try uv if You Use Python

## Resolve and install packages 10-100x faster

[uv](https://pydevtools.com/handbook/reference/uv.md) resolves and installs packages faster than [pip](https://pydevtools.com/handbook/reference/pip.md) because it uses a global content-addressable cache that hard-links packages into each project instead of re-downloading them. Package operations that take minutes with pip finish in seconds. That speed difference compounds in CI/CD pipelines and when syncing dependencies across team members, where [virtual environments](https://pydevtools.com/handbook/explanation/what-is-a-virtual-environment.md) get rebuilt often.

## Work with Python packaging standards

uv reads [PEP 517/518 build-system declarations](https://pydevtools.com/handbook/explanation/what-is-pep-517.md), follows [PEP 621 project metadata](https://pydevtools.com/handbook/explanation/what-is-pep-621-compatibility.md) in [pyproject.toml](https://pydevtools.com/handbook/reference/pyproject.toml.md), supports [PEP 723 inline script metadata](https://pydevtools.com/handbook/explanation/what-is-pep-723.md), and generates [PEP 751 lockfiles](https://pydevtools.com/handbook/explanation/what-is-pep-751.md). Build backends like [setuptools](https://pydevtools.com/handbook/reference/setuptools.md), [hatchling](https://pydevtools.com/handbook/reference/hatch.md), and [flit](https://pydevtools.com/handbook/reference/flit.md) integrate without friction.

## Replace five tools with one binary

Python development previously required [pip](https://pydevtools.com/handbook/reference/pip.md) for packages, [virtualenv](https://pydevtools.com/handbook/reference/virtualenv.md) or [venv](https://pydevtools.com/handbook/reference/venv.md) for environments, [pyenv](https://pydevtools.com/handbook/reference/pyenv.md) for Python versions, [pip-tools](https://pydevtools.com/handbook/reference/pip-tools.md) for [lockfiles](https://pydevtools.com/handbook/explanation/what-is-a-lock-file.md), and [pipx](https://pydevtools.com/handbook/reference/pipx.md) for CLI applications. uv handles all of that in a single binary.

## Switch from pip with minimal changes

`pip install package` becomes `uv add package`. `pip install -r requirements.txt` becomes `uv pip install -r requirements.txt` or `uv sync`. The familiar mental model stays intact. uv also provides an upgrade path: [migrate from requirements.txt to pyproject.toml](https://pydevtools.com/handbook/how-to/migrate-requirements.txt.md) when ready.

## Manage Python versions without pyenv

[Installing Python with uv](https://pydevtools.com/handbook/how-to/how-to-install-python-with-uv.md) downloads and manages Python versions on demand. Type `uv python install 3.12` and you're done. It bypasses platform package managers and pyenv configuration entirely. [Switch between versions](https://pydevtools.com/handbook/how-to/how-to-change-the-python-version-of-a-uv-project.md) with `uv python pin`. uv downloads missing versions automatically when needed.

## Learn More

- [How to install uv](https://pydevtools.com/handbook/how-to/how-to-install-uv.md) covers installation on every platform
- [Create your first Python project](https://pydevtools.com/handbook/tutorial/create-your-first-python-project.md) walks through uv from scratch
- [What's the difference between pip and uv?](https://pydevtools.com/handbook/explanation/whats-the-difference-between-pip-and-uv.md) compares the two package managers in detail
