Skip to content
Latchkey

PDM vs uv: Standards-Based Python Project Tools

PDM is a standards-forward Python project manager; uv is the faster Rust newcomer. Both use pyproject.toml and produce lockfiles.

PDM emphasizes adherence to Python packaging PEPs and offered early PEP 582 (__pypackages__) support. uv focuses on raw speed and a unified toolchain. The choice often comes down to standards-purity versus pipeline speed.

PDMuv
LanguagePythonRust
Configpyproject.tomlpyproject.toml
Lockfilepdm.lockuv.lock
PEP 582 (__pypackages__)SupportedNot the focus
Install/resolve speedGoodVery fast

Where PDM wins

PDM tracks Python packaging standards closely and supports PEP 582 style local package directories, which some teams prefer to virtualenvs. If you value standards alignment and a Python-native tool you can extend, PDM is a strong, mature choice.

Where uv wins

uv is generally faster at resolution and install, and bundles Python version management and running into one binary. For CI where install time is a recurring cost, uv usually shaves more wall-clock time.

In CI

Both are deterministic when you commit the lockfile and cache by its hash. Decide on standards/feature fit first (for example PEP 582), then on speed: for most pipelines uv is faster, for standards-focused teams PDM is appealing.

The verdict

Choose PDM if standards adherence or PEP 582 workflows matter to you; choose uv when install speed and a single fast toolchain win. Both are reproducible and pyproject-based, so either is defensible.

Related guides

Run this faster and cheaper on Latchkey managed runners. Start free →