pdm
python package manager following PEP standards
TLDR
Initialize a new project
SYNOPSIS
pdm command [options] [args...]
DESCRIPTION
pdm is a Python package manager following PEP standards. It manages dependencies, virtual environments, and builds using pyproject.toml.
pdm init creates a new project with pyproject.toml. It detects or creates a Python interpreter and optionally initializes a virtual environment.
Dependencies are declared in pyproject.toml and locked in pdm.lock. add modifies both; install reads the lock file. Dependency groups separate dev, test, and optional dependencies.
PDM supports PEP 582 (_pypackages) as an alternative to virtual environments. Packages install to a local directory without activation. Enable with **pdm config python.usevenv false**.
pdm run executes commands with the project environment active. Scripts defined in pyproject.toml under [tool.pdm.scripts] provide shortcuts.
Build and publish follow PEP 517/518. pdm build creates wheels and sdists; pdm publish uploads to PyPI.
PARAMETERS
-d, --dev
Development dependency.-G, --group name
Dependency group.-L, --lockfile file
Custom lock file path.--no-sync
Don't sync after adding.--no-lock
Skip lock file update.--prod, --production
Exclude dev dependencies.-p, --project path
Project directory.-v, --verbose
Increase verbosity.-q, --quiet
Suppress output.
COMMANDS
init
Create new project with pyproject.toml.add packages
Add dependencies.remove packages
Remove dependencies.install
Install dependencies from lock file.update [packages]
Update dependencies.lock
Generate or update lock file.sync
Sync packages with lock file.run command
Run command in project environment.list
List installed packages.build
Build distribution packages.publish
Publish to PyPI.use python
Switch Python interpreter.venv create|list|remove
Manage virtual environments.config key [value]
Get or set configuration.
CAVEATS
PEP 582 support varies by Python version and tools. Some older packages may not work with new standards. Lock file format is PDM-specific. Requires Python 3.8+.
HISTORY
PDM was created by Frost Ming and first released in 2019. It pioneered PEP 582 support and modern Python packaging standards. The project emphasizes standards compliance (PEP 517, 518, 621) over custom formats. PDM gained popularity as an alternative to pip, Poetry, and pipenv with its focus on PEP standards and performance.
