For years, I thought slow
pip installswere just part of being a Python developer.
I was wrong.
Working daily on Django APIs, microservices, and CI/CD pipelines, dependency management was always my biggest friction point:
- slow builds
- broken virtual environments
- dependency conflicts
- duplicated packages
Then I discovered uv.
And honestly?
π It completely changed the way I work.
β‘ What is uv?
uv is a blazing-fast Python package manager written in Rust that replaces pip, venv, and partially pyenv.
Built by Astral (the team behind Ruff), it delivers:
- β‘ Speed
- π Reliability
- π§ Simplicity
β Why pip is no longer enough
Letβs be honest.
With pip
- slow installations
- inefficient dependency resolution
- duplicated packages per project
- fragile environments
π Result: wasted time + hidden bugs
βοΈ 1. Installation (Windows, macOS, Linux)
One of the biggest advantages of uv:
π it can install and manage Python itself
πͺ Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
π macOS / π§ Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
β‘ Alternatives
winget install --id=astral-sh.uv -e
brew install uv
π§ͺ Quick test
pip install uv
β οΈ Limited (depends on your system Python)
π 2. Real Workflow with uv
Initialize a project
uv init crypto-tracker
cd crypto-tracker
Install dependencies
uv add requests rich
π This is where you feel the difference: itβs instant.
Example code
import requests
from rich.console import Console
console = Console()
def fetch_price():
data = requests.get(
"https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd"
).json()
price = data["bitcoin"]["usd"]
console.print(f"[bold green]BTC:[/bold green] ${price:,}")
if __name__ == "__main__":
fetch_price()
Run your code
uv run main.py
π No activation
π No setup
π Just run
π οΈ 3. Windows & Network Survival Guide
β οΈ PowerShell βscripts disabledβ
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
β Wrong venv activation
.\.venv\Scripts\activate
π Corporate Wi-Fi / SSL issues
$env:UV_NATIVE_TLS="1"
export UV_NATIVE_TLS=1
π’ Proxy setup
export HTTP_PROXY="http://proxy:8080"
export HTTPS_PROXY="http://proxy:8080"
π¦ Winget not recognized
π Update App Installer in Microsoft Store
𧬠4. Why uv is insanely fast
π§± Global cache
- packages downloaded once
- shared across projects
βοΈ Rust engine
- parallel downloads
- fast extraction
- native performance
π§ PubGrub algorithm
- fast dependency resolution
- fewer conflicts
- predictable builds
π§± 5. Project Architecture (uv init)
crypto-tracker/
βββ pyproject.toml
βββ uv.lock
βββ .venv/
βββ main.py
π pyproject.toml
[project]
name = "crypto-tracker"
version = "0.1.0"
dependencies = ["requests", "rich"]
π replaces requirements.txt
π official Python standard
π uv.lock
π locks exact versions
π ensures reproducibility
π .venv
π uses hardlinks
π fast + lightweight
π§ Global cache
~/.cache/uv/
π Lifecycle
pyproject.toml β uv.lock β .venv β global cache
βοΈ Before vs After
| pip | uv |
|---|---|
| slow | ultra fast |
| fragile | reliable |
| duplication | global cache |
| manual | automated |
π§° 6. Essential commands
| Command | Purpose |
|---|---|
| uv add | install packages |
| uv run | execute code |
| uv sync | sync environment |
| uv tree | debug dependencies |
| uv python install | install Python |
π¬ 7. Real Benchmark: pip vs uv
Same dependencies
requests, numpy, pandas, fastapi
π’ pip
pip install requests numpy pandas fastapi
β±οΈ 15β45 seconds
β‘ uv
uv add requests numpy pandas fastapi
β±οΈ 1β3 seconds
π Result
| Tool | Time |
|---|---|
| pip | 15β45s |
| uv | 1β3s |
π 10xβ20x faster
π₯οΈ Example terminal output
$ uv init crypto-tracker
Initialized project 'crypto-tracker'
$ uv add requests rich
Resolved 12 packages in 120ms
Installed in 340ms
$ uv run main.py
BTC: $67,245
π§ͺ CI/CD Impact
Before
pip install -r requirements.txt
β±οΈ 60β120s
After
uv sync
β±οΈ 5β10s
π₯ Real-world impact
After switching to uv:
- faster CI pipelines
- fewer environment bugs
- easier onboarding
- better developer experience
π§ Conclusion
uv is not just another tool.
π Itβs a shift in how Python projects are built and managed
In 2026:
π sticking to pip means staying behind
π adopting uv means moving faster, cleaner, smarter
π TL;DR
- replaces pip + venv
- written in Rust β blazing fast
- global cache β no duplication
- built-in Python management
- developer experience π₯
π Try it now
uv init
π‘ Final thought
The first time I saw
uvinstall a project in under 2 secondsβ¦
I thought something was broken.
Top comments (0)