Transform your AI development workflow with the world's fastest Python package manager. One tool replaces them all — at 10 to 100× the speed.
A single binary written in Rust that consolidates the fragmented Python toolchain into one fast, coherent experience.
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
pip freeze > requirements.txt
uv init my-project
uv add requests
uv run main.py
uv run automatically resolves and uses the project's virtual environment. You never type source activate again.A single command, regardless of platform. Installs in under a second.
# Install uv via the official installer
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install uv via PowerShell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# If you already have Python, you can also use pip
pip install uv
uv command is available on your PATH.uv --version
uv 0.x.x
One command creates the folder, sets up Git, writes a pyproject.toml, and generates a .gitignore.
my-project with your desired nameuv init my-project
cd my-project
uv init generated for you: a folder, git init, a .gitignore (Python-optimized), a README.md, and a modern pyproject.toml.Now let's add a proper workspace structure:
# Create a clean project skeleton
mkdir -p src scripts tests docs
Your project now looks like this:
No system Python needed. uv downloads and manages isolated Python installations per-project — cleanly and silently.
# Download and pin Python 3.12 for this project uv python install 3.12 # Set it as the project's Python version uv python pin 3.12
uv python list to see all managed versions.Verify it's active:
uv run python --version
Python 3.12.x
uv run prefix. That's all you need — no source .venv/bin/activate required. Ever.Installing packages is a single command. uv handles resolution, virtual environment creation, and lockfile generation automatically.
requests as an example# Add a dependency — uv does everything else
uv add requests
.venv/, resolved dependencies, installed the package, updated pyproject.toml, and generated a uv.lock file. All in under a second.For dev-only tools (linters, formatters), use the --dev flag:
# Dev dependencies don't ship with your project
uv add --dev ruff pytest
scripts/hello.py# scripts/hello.py import requests def main(): response = requests.get("https://httpbin.org/get") print(f"Status: {response.status_code}") print(f"Python + uv works!") if __name__ == "__main__": main()
Run it — no activation needed:
uv run python scripts/hello.py
Status: 200
Python + uv works!
Your .gitignore already excludes .venv/ and Python caches. Just commit and ship.
# Stage, commit, and push git add . git commit -m "Initial setup with uv" git branch -M main git remote add origin https://github.com/YOU/my-project.git git push -u origin main
uv.lock — it guarantees that anyone who clones your repo gets exact same dependency versions, every time.Click each item as you complete it.
uv installed and uv --version works
uv init
uv python pin
uv add
uv run
uv.lock committed