This repository contains code to demonstrate the basic features and ease of use of the
uv package manager.
We will demonstrate how simple it is to set up and run uv by setting up a project whose virtual environment
involves a non-trivial dependency resolution stage. In the example requirements.txt file, we have a
dependency on kuzu, lancedb, llama-index, polars, pyarrow, python-dotenv, numpy, and pyarrow,
which themselves have a host of inter-dependencies that may or may not conflict with each other.
Earlier, you may have used pip or poetry for such a task. uv is a 10x package and project manager
for Python that makes all of this much faster, while unifying the experience of what earlier required
a host of different tools.
The Python version we will use is 3.12. You can install uv using the following commands, depending
on your operating system:
# On macOS via Homebrew
brew install uv
# On Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# On Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"uv initThis creates a new pyproject.toml file in the root of the project.
If you already have a pyproject.toml file as part of an existing project that was generated by someone
else, you can sync the dependencies in the pyproject.toml file to the local virtual environment by running:
uv syncWhen using a requirements.txt file, you can add all of its dependencies to the existing
pyproject.toml file:
uv add -r requirements.txtAlternatively, you can add new dependencies manually as needed:
# Example of installing specific packages
uv add polars
uv add kuzu
# ...The dependencies in pyproject.toml file and its associated lock file uv.lock are installed
in a local virtual environment, in the directory .venv. To share the dependencies in a
platform-agnostic manner with your collaborators, you can simply commit the uv.lock file and
pyproject.toml to your repository, and this will allow them to reproduce the same environment
on their own machines by running uv sync on their own machines.
Note
If you are relying on uv to manage your Python version, you do not need to worry about virtual
environments at all! You can simply run uv run <script> and uv will use the Python version
specified in your pyproject.toml file, and set up and manage the virtual environment for you.
You can execute the hello.py script by running the following command:
uv run hello.pyThis is very similar to running python hello.py or python3 hello.py in the terminal, but under the hood,
uv is performing a whole host of steps, including the following:
- Installs Python if it's not already installed
- Creates and activates the virtual environment
- Installs the dependencies
- Runs the code
This is a very simple example, but hopefully, it demonstrates how uv can make it so much easier to
manage multiple Python versions, local virtual environments and all your project's dependencies.
Have fun using uv, and spread the word!