pdm
A modern Python package and dependency manager supporting the latest PEP standards
What it is and what it does
PDM is a next-generation Python package manager designed to work with modern Python standards, particularly PEP 621 (project metadata) and PEP 517 (build backends). It combines environment management (similar to Pipenv), dependency locking, and packaging capabilities in a single tool, reading configuration from a standardized pyproject.toml file and maintaining a lockfile for reproducible installs.
Unlike Poetry or Hatch, PDM does not lock you into a specific build backend—you can choose any backend you prefer. It includes a fast dependency resolver optimized for large binary distributions, a plugin system for extending functionality, and optional features like centralized installation caching (similar to pnpm) and Python version management via astral-sh's python-build-standalone.
Use it for:
- Manage dependencies and virtual environments for a Python library or application using a single pyproject.toml file
- Build and package Python projects with flexibility to choose your own PEP 517 build backend
- Lock dependencies for reproducible installs across team members or CI/CD pipelines
- Develop projects that need both environment isolation and centralized package caching to save disk space
- Extend PDM with custom plugins to integrate project-specific workflows or tooling
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
PDM is a modern Python package and dependency manager that handles project metadata, dependency resolution, virtual environment management, and PEP 517 build backend support using standardized pyproject.toml files.
Yes, if you want a modern, standards-compliant package manager with flexibility in build backends and active maintenance. The low install friction, recent activity (release 3 days ago), and lack of known vulnerabilities make it a solid choice. Clarify the license terms first if you operate under strict licensing constraints, and verify that the 24 runtime dependencies align with your environment requirements.
Install
pdm on PyPI
pip
pip install pdmuv
uv add pdmpoetry
poetry add pdmInstalling pdm
Before you install
Installation friction is low; the package is distributed as a wheel and maintained actively with a release within the last few days. It requires Python 3.10 or higher and pulls in 24 runtime dependencies including virtualenv, httpx, and resolvelib for core functionality.
License in practice
License treatment is unclear—no SPDX identifier or raw license string is recorded in the metadata, though the description excerpt mentions MIT licensing. Verify the actual license terms before adopting in restricted environments.
Quickstart
# Install PDM (via pip or standalone binary)
pip install pdm
# Create a new project
pdm new my-project
# Add dependencies
pdm add requests flask
Requires Python 3.10 or higher; the standalone binary is also available as an alternative to pip installation.
Verify before relying
- Exact license identifier and terms (description says MIT but metadata shows unclear treatment)
- Whether the 24 runtime dependencies are all required or some are optional/conditional
- Performance characteristics of the dependency resolver on large projects
Package facts
| License | not declared (unclear) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 24 — argcomplete, blinker, packaging, platformdirs, rich, virtualenv, pyproject-hooks, unearth, dep-logic, findpython, tomlkit, shellingham, python-dotenv, resolvelib, installer, truststore, tomli, hishel, pbs-installer, httpx, filelock, httpcore, certifi, id |
| Maintenance | actively maintained — 3 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 12,682,384/month — #1,313 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pdm-2.28.1-py3-none-any.whl
Keywords: packaging, dependency, workflow
Tags
More Build Tools packages
Provides reusable utilities for Python…
permissive · top 100 on PyPI
tqdmWraps any iterable to display a real-time…
copyleft · top 100 on PyPI
pippip is the standard installer for Python…
permissive · top 100 on PyPI
hatchlingHatchling is a standards-compliant Python build…
permissive · top 100 on PyPI
grpcio-toolsGenerates Python gRPC service stubs and message…
permissive · top 1,000 on PyPI
pre-commitpre-commit is a framework for installing and…
permissive · top 1,000 on PyPI
juliapkgManages Julia language installation and package…
permissive · top 15,000 on PyPI
pdm-backendA PEP 517-compliant build backend that reads…
permissive · top 5,000 on PyPI
pdm-build-lockedA pdm plugin that includes locked dependency…
permissive · top 5,000 on PyPI
dependency-groupsParses and resolves PEP 735 dependency groups…
permissive · top 5,000 on PyPI
pdm-pep517A PEP 517 build backend that reads PEP 621…
permissive · top 15,000 on PyPI
cyclonedx-bomGenerates Software Bill of Materials (SBOM)…
permissive · top 5,000 on PyPI
pyproject-tomlParses and validates Python project metadata…
permissive · top 15,000 on PyPI
cyclonedx-pyGenerates Software Bill of Materials (SBOM)…
unclear · top 15,000 on PyPI
deptryScans Python projects to detect unused,…
permissive · top 5,000 on PyPI