Skip to content


PDM is a modern Python package manager with PEP 582 support. It installs and manages packages in a similar way to npm that doesn't need to create a virtualenv at all!

Feature highlights#

  • PEP 582 local package installer and runner, no virtualenv involved at all.
  • Simple and relatively fast dependency resolver, mainly for large binary distributions.
  • A PEP 517 build backend.


PDM requires Python 3.7+ to be installed. It works on multiple platforms including Windows, Linux and MacOS.


There is no restriction about what Python version that your project is using but installing PDM itself needs Python 3.7+.

To avoid messing up with the system Python environemnt, the most recommended way to install PDM is via pipx:

$ pipx install pdm

Other installation methods#

Install PDM into user site with pip:

$ pip install --user pdm

Use the docker image#

PDM also provides a docker image to ease your deployment flow, to use it, write a Dockerfile with following content:

FROM frostming/pdm

COPY . /app

# -- Replace with the correct path to your app's main executable
CMD ["pdm", "run", "python", ""]

Use with IDE#

Now there are not built-in support or plugins for PEP 582 in most IDEs, you have to configure your tools manually.

PDM will write and store project-wide configurations in .pdm.toml and you are recommended to add following lines in the .gitignore:



Mark __pypackages__/<major.minor>/lib as Sources Root.


Add following in the settings.json:

  "python.autoComplete.extraPaths": ["__pypackages__/<major.minor>/lib"]