Lately, I’ve been experimenting with new Python tools that can save me time and make development feel a bit more effortless. That’s when I stumbled upon uv
and honestly, it’s been a game-changer for me.
If you’re like me, juggling between pip
, venv
, and pip-tools
gets old really fast. One tool to install dependencies, another to manage virtual environments, and yet another to lock them down. It’s not exactly a smooth ride.
But uv
? It’s like someone said: “What if we just made all of this better and faster… in one tool?”
What is uv
?
In short, uv
is a next-gen Python package manager built with Rust. It’s crazy fast, super clean to use, and replaces:
-
pip
(for installing packages) -
virtualenv
orvenv
(for managing virtual environments) -
pip-tools
(for lockfile generation) - and many more...
All of this, wrapped up in one executable.
Why I Love It
When I started using uv
, I was just hoping for something simple. But it turned out to be way more than that.
Here’s what clicked with me:
-
Speed: It installs packages way faster than pip. Even
uv pip install torch
finishes in seconds. -
One command does it all: I no longer need to create a virtual environment manually or remember where I put my
requirements.txt
. - No Python needed to bootstrap: Since it’s written in Rust, it's just a standalone binary. Nothing to break or version mismatch.
And the best part? It just works.
How I Started Using It
Here’s how I got rolling with uv
.
Install it
For windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
If you’re on macOS or linux, you can use:
curl -LsSf https://astral.sh/uv/install.sh | sh
For more ways (such as using homebrew, pip, etc), check out uv Installation Guide
Step 1: Create a Virtual Environment
I used to do this manually using python -m venv .venv
, but now:
uv venv
Boom. Instant virtual environment. No fuss. Automatically activates as well.
Step 2: Install Packages
Instead of worrying about activating my environment, I just run:
uv pip install <package_name>
It takes care of installing and placing it inside the environment, no need to activate manually.
Step 3: Run My Script
uv run python <filename>.py
This automatically uses the environment and feels clean and snappy. I didn’t realize how much of a mental load “activate venv, install, deactivate” was until I didn’t have to do it anymore.
My Workflow Now
What used to be this:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip freeze > requirements.txt
is now this:
uv venv
uv pip install flask
uv pip compile
uv run python app.py
It just feels smoother. Like my brain has one less thing to worry about.
Should You Switch?
If you’re a Python developer who’s tired of waiting on installs or fumbling with environments, give uv
a try. You don’t even need to change your existing project structure. It works with requirements.txt
, pyproject.toml
, or lockfiles from pip-tools
.
It’s still pretty new, but I can totally see it becoming a default tool in Python dev environments, especially when performance matters (like in ML or large-scale backend projects).
Final Thoughts
I didn’t expect to get this excited about a package manager — but uv
genuinely makes Python development feel fun again. Lightweight, fast, and intuitive. No more glueing 3 tools together to do one job.
Try it. You might just like it more than pip
.
Feel free to reach out if you try it or have any thoughts! Be a part of my dev journey over at GitHub @iamfaham.
Top comments (0)