Morgan Williams

UV replaced my entire Python toolchain

2025-02-05 dev 244 words 1 min

UV replaced pip, virtualenv, pipenv, poetry, and pyenv. One tool. Installs in seconds. Runs everything faster.

UV replaced pip, virtualenv, pipenv, poetry, and pyenv. One tool. Installs in seconds. Runs everything faster.

Install

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

Beyond Python Projects

UV isn’t just for managing Python projects. uvx runs any Python CLI tool without installing it globally – replacing things you’d normally install with brew or pipx.

uvx marimo          # reactive notebooks
uvx harlequin       # SQL IDE in your terminal
uvx ruff check .    # lint Python
uvx yt-dlp URL      # download video
uvx llm "question"  # CLI access to LLMs

Install tools permanently with uv tool add:

uv tool add marimo
uv tool upgrade --all

Project Management

uv init myproject
uv add fastapi pydantic
uv run python main.py

No python -m venv, no pip install, no requirements.txt. UV creates the venv, resolves dependencies, and locks them automatically.

Self-Contained Scripts

UV also makes Python scripts fully portable with inline dependency metadata (PEP 723):

#!/usr/bin/env -S uv run --script
# /// script
# requires-python = ">=3.12"
# dependencies = ["httpx"]
# ///

import httpx
print(httpx.get("https://httpbin.org/ip").json())

Make it executable and it runs anywhere UV is installed. No venv, no setup. See runnable python scripts for more.

Why UV Over Traditional Tools

Speed: 10-100x faster than pip for dependency resolution. Reliability: Deterministic installs with automatic lock files. Simplicity: One tool for venvs, packages, scripts, and CLI tools.

It replaces pip, virtualenv, pipenv, poetry, and pyenv – combined.

Title set at 44 point. Text in Source Serif 4, 12 on 17. 244 words, published 2025-02-05.

← Index