
Introduction#
PDM, as described, is a modern Python package and dependency manager supporting the latest PEP standards. But it is more than a package manager. It boosts your development workflow in various aspects. The most significant benefit is it installs and manages packages
in a similar way to npm
that doesn't need to create a virtualenv at all!
Feature highlights#
- Opt-in PEP 582 support, no virtualenv involved at all.
- Simple and fast dependency resolver, mainly for large binary distributions.
- A PEP 517 build backend.
- PEP 621 project metadata.
- Flexible and powerful plug-in system.
- Versatile user scripts.
- Opt-in centralized installation cache like pnpm.
Installation#
PDM requires Python 3.7+ to be installed. It works on multiple platforms including Windows, Linux and MacOS.
Note
You can still have your project working on lower Python versions, read how to do it here.
Recommended installation method#
PDM requires python version 3.7 or higher.
Like Pip, PDM provides an installation script that will install PDM into an isolated environment.
1 |
|
1 |
|
For security reasons, you should verify the checksum of install-pdm.py
.
The sha256 checksum is: ce0a116987b2667231391d13dd005006433114033cac74aa18f0b2dec5538d03
The installer will install PDM into the user site and the location depends on the system:
$HOME/.local/bin
for Unix%APPDATA%\Python\Scripts
on Windows
You can pass additional options to the script to control how PDM is installed:
1 2 3 4 5 6 7 8 9 10 |
|
You can either pass the options after the script or set the env var value.
Other installation methods#
1 |
|
1 2 |
|
1 |
|
Install the head version of GitHub repository. Make sure you have installed Git LFS on your system.
1 |
|
See also: https://pypa.github.io/pipx/
1 |
|
Assuming you have asdf installed.
1 2 3 |
|
By copying the Pyprojectx wrapper scripts to a project, you can install PDM as (npm-style) dev dependency inside that project. This allows different projects/branches to use different PDM versions.
To initialize a new or existing project, cd into the project folder and:
1 2 |
|
1 2 |
|
Update the PDM version#
1 |
|
Packaging Status#
Shell Completion#
PDM supports generating completion scripts for Bash, Zsh, Fish or Powershell. Here are some common locations for each shell:
1 |
|
1 2 |
|
Oh-My-Zsh:
1 2 |
|
Then make sure pdm plugin is enabled in ~/.zshrc
1 |
|
1 2 3 4 5 6 7 8 9 10 |
|
Virtualenv and PEP 582#
In addition to the virtualenv management, PDM supports PEP 582 as an opt-in feature. You can learn more about the two modes in the corresponding chapters in Working with virtualenv and Working with PEP 582
PDM Eco-system#
Awesome PDM is a curated list of awesome PDM plugins and resources.