Mr. Editor-in-chief Mr. Editor-in-chief February 4, 2026 Updated April 24, 2026

UV

1. What is UV?

  • Purpose: UV is a unified Python package manager designed to replace pip (package installation), venv (virtual environments), pip-tools (lock files), and pipx (command-line tools).
  • Performance: Written in Rust, UV is faster than traditional tools.
  • Maintainer: Developed by Astral, known for the Ruff linter.
  • Goal: Simplify Python project management with a single tool.

2. Installation

  • Methods: UV can be installed via Homebrew (easiest for Mac users), a standalone installer (curl for Mac/Linux, PowerShell for Windows), or other package managers.
  • Example: On a Mac with Homebrew, run brew install uv. Verify installation with uv to list available commands.
  • Resources: Installation options are detailed on UV’s official page (linked in the video description).

3. Traditional Workflow (pip and venv)

  • Steps:
  • Create a project directory (mkdir old_way).
  • Create a virtual environment (python3 -m venv venv).
  • Activate it (source venv/bin/activate).
  • Install packages (pip install flask requests).
  • Create a project file (touch main.py).
  • Generate a requirements.txt (pip freeze > requirements.txt).
  • Drawbacks: Multiple steps, manual virtual environment management, and lack of intuitive dependency locking make it complex, especially for beginners.

4. UV Workflow

  • Project Initialization:
  • Create a new project with uv init new_app, which sets up a directory with a Git repository, .gitignore, .python-version, README.md, main.py, and pyproject.toml.
  • Alternative: Run uv init in an existing directory.
  • Init a project with a particular python version: uv init . --python 3.10
  • Project types: app (default, for scripts/web servers) or lib (for distributable packages).
  • Dependency Management:
  • Add packages with uv add flask requests, which updates pyproject.toml and creates a uv.lock file for reproducible environments.
  • UV automatically creates and manages a virtual environment (.venv) when needed.
  • Visualize dependencies with uv tree.
  • Running Code:
  • Run scripts with uv run main.py, which uses the project’s virtual environment without manual activation.
  • If the virtual environment is deleted, uv run recreates it using pyproject.toml and uv.lock.
  • Environment Syncing:
  • Use uv sync to recreate an environment from pyproject.toml and uv.lock.
  • Remove dependencies with uv remove flask, which updates project files.

5. Advantages of UV

  • Speed: UV’s Rust implementation and global caching system make installations faster than pip.
  • Disk Efficiency: Global caching stores packages once for multiple projects, saving space.
  • Reproducibility: The uv.lock file ensures consistent environments across machines.
  • Simplicity: Fewer commands and automatic virtual environment handling streamline workflows.
  • Backward Compatibility: The uv pip subcommand mimics pip for gradual transitions (e.g., uv pip install numpy).

6. Migrating Existing Projects

  • Steps:
  • Run uv init in the project directory.
  • Import dependencies from requirements.txt with uv add -r requirements.txt.
  • Delete requirements.txt to rely on pyproject.toml and uv.lock.
  • Benefit: Converts pip-based projects to UV’s modern workflow.

7. UV as a pipx Replacement

  • Tool Installation: Install global Python tools (e.g., Ruff) with uv tool install ruff, making them available system-wide.
  • Temporary Tool Usage: Run tools without permanent installation using uv tool run ruff check or the shortcut uvx ruff check.
  • Tool Management: List tools (uv tool list), uninstall (uv tool uninstall ruff), or upgrade (uv tool upgrade --all).
  • Example: Install Ruff to lint code (ruff check) or run it temporarily (uvx ruff check).

8. Additional Features

  • Python Version Management: UV supports multiple Python versions via .python-version.
  • Package Publishing: Commands for building and uploading packages to PyPI.
  • Docker Optimization: Features for building efficient Docker containers (not covered in detail).
  • Future Tutorials: The presenter plans a follow-up on Ruff and advanced UV features.

9. Why Switch to UV?

  • For Beginners: Simplifies complex tasks like virtual environment setup.
  • For Experts: Offers speed, reproducibility, and advanced features.
  • Community Adoption: UV and Ruff are gaining popularity, with the presenter adopting UV for future videos.
  • Transition Ease: The uv pip subcommand supports gradual adoption.

Takeaways

  • Efficiency: UV consolidates multiple tools into a faster, user-friendly interface.
  • Modern Workflow: pyproject.toml and uv.lock replace requirements.txt for better dependency management.
  • Flexibility: Supports both new projects and migrations, plus global tool management.
  • Community Impact: Backed by Astral, UV is becoming a standard in Python development.