Skip to content

Use uv as our backend dependency manager

Context and Problem Statement

We need a modern Python package management tool that is:

  • Much faster than pip and pip-tools.
  • Able to handle lock files and virtual environments cleanly.
  • Better at resolving complex dependency trees reproducibly.

Considered Options

  • pip + virtualenv
  • pipenv
  • poetry
  • pdm
  • uv

Decision Outcome

uv (by Astral) was selected for its speed, strict reproducibility, and modern tooling ergonomics.

It significantly improves dependency resolution times and offers a seamless developer experience.

Unlike traditional tools like pip, uv performs rapid dependency resolution and installs, while producing lock files that ensure consistency across platforms and environments.

Consequences

  • ✅ Extremely fast dependency resolution and installation (Rust based).
  • ✅ Modern, opinionated tooling with strong defaults.
  • ✅ Simplifies management of virtual environments and lock files.
  • ✅ Support for workspace packages, to allow for easier monorepo setups.
  • ❌ Less mature ecosystem and community support (as of 2025, growing fast!).
  • ❌ Requires team familiarity with new workflows.