UV: Cheatsheet
Some usefull commands with uv
Published: | Last updated:
Here's a quick UV cheatsheet with some simple commands I use regularly.
Starting a new project
If you have a fresh brand new project, you can start using UV right away.
From the command line, run:
uv init
This will create a pyproject.toml file, a new virtual environment (in directory .venv),
and install python.
You want to add pandas to your project? It's as simple as running:
uv add pandas
Understanding pyproject.toml
Let's say you have an existing pyproject.toml file that looks something like this:
[project]
name = "yourproject"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"jinja2>=3.1.6",
]
[dependency-groups]
dev = [
"livereload>=2.7.1",
]
This tells us a few interesting things:
- This project requires a version of
Pythonthat is >= 3.12 - This project depends on the
jinja2package - There are separate dependencies in a group called
devthat uses thelivereloadpackage
The dependency-groups separate your project dependencies.
You can use this to do things like split dependencies that are strictly necessary for your project, from
those dependencies needed during development of your project.
Sync Python with pyproject.toml
To install and sync your virual environment with the dependencies (e.g., 'jinja2' in this
example) in the pyproject.toml file, run this from the command line:
uv sync
To sync and install the dev dependencies (e.g., 'livereload') in addition to the regular
dependecies (e.g., 'jinja2') in the
pyproject.toml file, run:
uv sync --group dev
If you have other groups, you can sync everything with:
uv sync --all-groups
Add packages
Let's say you want to add the Python package beautifulsoup4 to your core dependencies, run this from the
command line:
uv add beautifulsoup4
This will add beautifulsoup4 to dependecies in your pyproject.toml, and download and
install the package in your virtual environment. So you can start using it right away!
Let's say you want to add the ruff package to format your code.
Since ruff isn't required to run your project, you might want to separate it
for your rother dependencies and add it as a dev group dependency:
uv add --group dev ruff
You should now see beautifulsoup4 as part of the dependencies and ruff as
part of the dev group dependencies in your pyproject.toml file looking something like this:
dependencies = [
"jinja2>=3.1.6",
"beautifulsoup4>=4.14.2",
]
[dependency-groups]
dev = [
"livereload>=2.7.1",
"ruff>=0.14.1",
]
Running scripts
You can/should even run your scripts (with command line arguments) with uv:
uv run python my_script.py --myargs
Export pyproject.toml to requirements.txt
Sometimes you'll still want to create a requirements.txt from your pyproject.toml.
You can export pyproject.toml to requirements.txt by running this command:
uv pip compile pyproject.toml -o requirements.txt
This will give you a `requirements.txt` for the packages in the dependencies list.
However, this list of packages will include your dependencies (e.g., "jinja"), and the dependencies of your dependencies (e.g., the dependenices of "jinja").
This may or may not be what you want. To ONLY include the dependencies you specified, you can instead run:
uv pip compile --no-deps pyproject.toml -o requirements.txt