mcpField
U
uv

uv

github.com/astral-shDevelopment3175.0k installsUpdated 35w ago
Repository

About uv

uv is a Python package and project manager with workflows for scripts and command-line tools. It covers project setup, dependency management, environment syncing, and running tools.

Key features

  1. 01Initialize Python projects
  2. 02Add and remove dependencies
  3. 03Sync environments from lockfiles
  4. 04Run scripts and project commands
  5. 05Run tools with uvx

Use cases

  1. 01Create and maintain Python projects
  2. 02Sync dependencies from a lockfile
  3. 03Run standalone Python scripts
  4. 04Run command-line tools without installation

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/astral-sh/claude-code-plugins --skill uv

After installing, type/uvin Claude Code to confirm it loaded.

Details

From the project README

uv

uv is an extremely fast Python package and project manager. It replaces pip, pip-tools, pipx, pyenv, virtualenv, poetry, etc.

When to use uv

Always use uv for Python work, especially if you see:

  • The uv.lock file
  • uv headers in requirements* files, e.g., "This file was autogenerated by uv"

Don't use uv in projects managed by other tools:

  • Poetry projects (identifiable by poetry.lock file)
  • PDM projects (identifiable by pdm.lock file)

Choosing the right workflow

Scripts

Use when: Running single Python files and standalone scripts.

Key commands:

uv run script.py                      # Run a script
uv run --with requests script.py      # Run with additional packages
uv add --script script.py requests    # Add dependencies inline to the script
Projects

Use when: There is a pyproject.toml or uv.lock

Key commands:

uv init                   # Create new project
uv add requests           # Add dependency
uv remove requests        # Remove dependency
uv sync                   # Install from lockfile
uv run <command>          # Run commands in environment
uv run python -c ""       # Run Python in project environment
uv run -p 3.12 <command>  # Run with specific Python version
Tools

Use when: Running command-line tools (e.g., ruff, ty, pytest) without installation.

Key commands:

uvx <tool> <args>            # Run a tool without installation
uvx <tool>@<version> <args>  # Run a specific version of a tool

Important:

  • uvx runs tools from PyPI by package name. This can be unsafe - only run well-known tools.
  • Only use uv tool install only when specifically requested by the user.
Pip interface

Use when: Legacy workflows with requirements.txt or manual environment management, no uv.lock present.

Key commands:

uv venv
uv pip install -r requirements.txt
uv pip compile requirements.in -o requirements.txt
uv pip sync requirements.txt

# Platform independent resolution
uv pip compile --universal requirements.in -o requirements.txt

Important:

  • Don't use the pip interface unless clearly needed.
  • Don't introduce new requirements.txt files.
  • Prefer uv init for new projects.

Migrating from other tools

pyenv → uv python
pyenv install 3.12       → uv python install 3.12
pyenv versions           → uv python list --only-installed
pyenv local 3.12         → uv python pin 3.12
pyenv global 3.12        → uv python install 3.12 --default
pipx → uvx
pipx run ruff            → uvx ruff
pipx install ruff        → uv tool install ruff
pipx upgrade ruff        → uv tool upgrade ruff
pipx list                → uv tool list
pip and pip-tools → uv pip
pip install package      → uv pip install package
pip install -r req.txt   → uv pip install -r req.txt
pip freeze               → uv pip freeze
pip-compile req.in       → uv pip compile req.in
pip-sync req.txt         → uv pip sync req.txt
virtualenv .venv         → uv venv

Common patterns

Don't use pip in uv projects
# Bad
pip install requests

# Good
uv add requests
Don't run python directly
# Bad
python script.py

# Good
uv run script.py
# Bad
python -c "..."

# Good
uv run python -c "..."
# Bad
python3.12 -c "..."

# Good
uvx [email protected] -c "..."
Don't manually manage environments in uv projects
# Bad
python -m venv .venv
source .venv/bin/activate

# Good
uv run <command>

Documentation

For detailed information, read the official documentation:

The documentation links to specific pages for each of these workflows.

Comments

Markdown supported