Python UV Package Manager

UV is a fast Python package & project manager written in Rust.

What is UV?

UV (pronounced “you-vee”) is a fast, all-in-one Python package & project manager written in Rust that can replace:

  • pip
  • virtualenv
  • pip-tools
  • pipx
  • pyenv

Getting started

To get started, you can install UV using a standalone installer or via PyPI/pipx:

curl -LsSf https://astral.sh/uv/install.sh | sh

Or on Windows:

irm https://astral.sh/uv/install.ps1 | iex

Once installed, commands like uv init, uv add, uv lock, uv sync, uv run, and uv python install let you manage your entire Python project lifecycle from one place ([Real Python][3], [Bit Doze][11], [Ricky Rick][13], [Astral Docs][8]).


Start a project

uv init qa_tests
cd qa_tests

What you get:

  • .venv/ automatically created
  • pyproject.toml for dependency tracking
  • uv.lock for reproducible installs

Add dependencies

Example for a Selenium + Pytest setup:

uv add pytest requests selenium allure-pytest

💡 No pip install or venv activate needed — UV handles both.


Run Without Activating venv

uv run main.py
  • This runs inside your managed virtual environment automatically.

Lock Dependencies for CI/CD

Lock your environment:

uv lock

Then in CI:

uv sync --frozen

Guarantees project runs on exactly the same versions as dev.


Manage Python Versions Per Project

For example, pin to Python 3.11 for your project:

uv python install 3.11
uv python pin 3.11

Your teammates and CI runners will use the same version.


Upgrade or Audit Packages

uv upgrade
uv tree
  • uv upgrade → updates dependencies within your constraints
  • uv tree → shows dependency tree (great for debugging conflicts)