Working with Python Packages (uv)
Recent versions of Pegasus use uv to manage Python packages.
It provides all the functionality of pip-tools while being much faster and offering more flexibility
and features.
Requirements Files
Section titled “Requirements Files”uv uses two files to manage requirements. The first is a pyproject.toml file, which contains the
base list of packages. The pyproject.toml file also supports dependency groups, which are used
for development and production requirements.
pyproject.toml replaces the previous requirements.in, dev-requirements.in, and prod-requirements.in files.
The second file is the uv.lock file. This file contains the pinned versions of dependencies
that are used by the project’s environment.
This file is automatically generated from the pyproject.toml file and should not be edited by hand.
uv.lock replaces the previous requirements.txt, dev-requirements.txt, and prod-requirements.txt files.
Adding or removing a package
Section titled “Adding or removing a package”To add or remove packages you can run the following commandss:
# native versionuv add <package_name>uv remove <package_name>
# docker versionmake uv add <package_name>make uv remove <package_name>If you’re using natively this is all you have to do! The command will update your pyproject.toml file,
your uv.lock file, and sync your virtual environment.
On Docker, you will have to also rebuild the container. You can do that with:
make buildmake restartThe make requirements command can also be used to sync your uv.lock file and rebuild / restart your containers.
Upgrading a package
Section titled “Upgrading a package”You can upgrade a package with:
# native version - update the lockfileuv lock --upgrade-package <package_name># native version - update the lockfile and sync the virtual environmentuv sync --upgrade-package <package_name>
# docker versionmake uv "lock --upgrade-package wagtail"You can upgrade all packages with:
# native version - update the lockfileuv lock --upgrade# native version - update the lockfile and sync the virtual environmentuv sync --upgrade
# docker versionmake uv "lock --upgrade"Like with adding packages, if you’re using Docker, you’ll have to rebuild and restart Docker containers for the updated environment to work:
make buildmake restart