pdm 2.26.0


pip install pdm

  Latest version

Released: Oct 11, 2025


Meta
Author: Frost Ming
Requires Python: >=3.9

Classifiers

Topic
  • Software Development :: Build Tools

Programming Language
  • Python :: 3
  • Python :: 3.9
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.12
  • Python :: 3.13

PDM

A modern Python package and dependency manager supporting the latest PEP standards. 中文版本说明

PDM logo

Docs Twitter Follow Discord

Github Actions PyPI codecov Packaging status Downloads pdm-managed trackgit-views

asciicast

What is PDM?

PDM is meant to be a next generation Python package management tool. It was originally built for personal use. If you feel you are going well with Pipenv or Poetry and don't want to introduce another package manager, just stick to it. But if you are missing something that is not present in those tools, you can probably find some goodness in pdm.

Highlights of features

  • 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.
  • Install Pythons using indygreg's python-build-standalone.
  • Opt-in centralized installation cache like pnpm.

Comparisons to other alternatives

Pipenv

Pipenv is a dependency manager that combines pip and venv, as the name implies. It can install packages from a non-standard Pipfile.lock or Pipfile. However, Pipenv does not handle any packages related to packaging your code, so it’s useful only for developing non-installable applications (Django sites, for example). If you’re a library developer, you need setuptools anyway.

Poetry

Poetry manages environments and dependencies in a similar way to Pipenv, but it can also build .whl files with your code, and it can upload wheels and source distributions to PyPI. It has a pretty user interface and users can customize it via a plugin. Poetry uses the pyproject.toml standard.

Hatch

Hatch can also manage environments, allowing multiple environments per project. By default it has a central location for all environments but it can be configured to put a project's environment(s) in the project root directory. It can manage packages but without lockfile support. It can also be used to package a project (with PEP 621 compliant pyproject.toml files) and upload it to PyPI.

This project

PDM can manage virtual environments (venvs) in both project and centralized locations, similar to Pipenv. It reads project metadata from a standardized pyproject.toml file and supports lockfiles. Users can add additional functionality through plugins, which can be shared by uploading them as distributions.

Unlike Poetry and Hatch, PDM is not limited to a specific build backend; users have the freedom to choose any build backend they prefer.

Installation

Packaging status

PDM requires python version 3.9 or higher. Alternatively, you can download the standalone binary file from the release assets.

Via Install Script

Like Pip, PDM provides an installation script that will install PDM into an isolated environment.

For Linux/Mac

curl -sSL https://pdm-project.org/install-pdm.py | python3 -

For Windows

powershell -ExecutionPolicy ByPass -c "irm https://pdm-project.org/install-pdm.py | py -"

For security reasons, you should verify the checksum of install-pdm.py. It can be downloaded from install-pdm.py.sha256.

The installer will install PDM into the user site and the location depends on the system:

  • $HOME/.local/bin for Linux
  • $HOME/Library/Python/<version>/bin for MacOS
  • %APPDATA%\Python\Scripts on Windows

You can pass additional options to the script to control how PDM is installed:

usage: install-pdm.py [-h] [-v VERSION] [--prerelease] [--remove] [-p PATH] [-d DEP]

optional arguments:
  -h, --help            show this help message and exit
  -v VERSION, --version VERSION | envvar: PDM_VERSION
                        Specify the version to be installed, or HEAD to install from the main branch
  --prerelease | envvar: PDM_PRERELEASE    Allow prereleases to be installed
  --remove | envvar: PDM_REMOVE            Remove the PDM installation
  -p PATH, --path PATH | envvar: PDM_HOME  Specify the location to install PDM
  -d DEP, --dep DEP | envvar: PDM_DEPS     Specify additional dependencies, can be given multiple times

You can either pass the options after the script or set the env var value.

Alternative Installation Methods

If you are on macOS and using homebrew, install it by:

brew install pdm

If you are on Windows and using Scoop, install it by:

scoop bucket add frostming https://github.com/frostming/scoop-frostming.git
scoop install pdm

Otherwise, it is recommended to install pdm in an isolated environment with pipx:

pipx install pdm

Or you can install it under a user site:

pip install --user pdm

With asdf-vm

asdf plugin add pdm
asdf install pdm latest

Quickstart

Create a new PDM project

pdm new my-project

Answer the questions following the guide, and a PDM project with a pyproject.toml file will be ready to use.

Install dependencies

pdm add requests flask

You can add multiple dependencies in the same command. After a while, check the pdm.lock file to see what is locked for each package.

Badges

Tell people you are using PDM in your project by including the markdown code in README.md:

[![pdm-managed](https://img.shields.io/endpoint?url=https%3A%2F%2Fcdn.jsdelivr.net%2Fgh%2Fpdm-project%2F.github%2Fbadge.json)](https://pdm-project.org)

pdm-managed

PDM Eco-system

Awesome PDM is a curated list of awesome PDM plugins and resources.

Sponsors

Credits

This project is strongly inspired by pyflow and poetry.

License

This project is open sourced under MIT license, see the LICENSE file for more details.

2.26.0 Oct 11, 2025
2.25.9 Aug 22, 2025
2.25.8 Aug 22, 2025
2.25.7 Aug 22, 2025
2.25.6 Aug 14, 2025
2.25.5 Jul 30, 2025
2.25.4 Jun 30, 2025
2.25.3 Jun 22, 2025
2.25.2 Jun 16, 2025
2.25.1 Jun 14, 2025
2.25.0 Jun 13, 2025
2.24.2 May 23, 2025
2.24.1 Apr 23, 2025
2.24.0 Apr 18, 2025
2.23.1 Apr 09, 2025
2.23.0 Apr 01, 2025
2.22.4 Mar 07, 2025
2.22.3 Jan 27, 2025
2.22.2 Jan 11, 2025
2.22.1 Dec 19, 2024
2.22.0 Dec 09, 2024
2.21.0 Nov 25, 2024
2.20.1 Nov 09, 2024
2.20.0.post1 Nov 01, 2024
2.20.0 Oct 31, 2024
2.19.3 Oct 19, 2024
2.19.2 Oct 11, 2024
2.19.1 Sep 23, 2024
2.19.0 Sep 23, 2024
2.19.0a0 Sep 05, 2024
2.18.2 Sep 10, 2024
2.18.1 Aug 16, 2024
2.18.0 Aug 14, 2024
2.17.3 Aug 01, 2024
2.17.2 Jul 31, 2024
2.17.1 Jul 19, 2024
2.17.0 Jul 18, 2024
2.16.1 Jun 26, 2024
2.16.0 Jun 25, 2024
2.15.4 May 30, 2024
2.15.3 May 20, 2024
2.15.2 May 08, 2024
2.15.1 Apr 25, 2024
2.15.0 Apr 19, 2024
2.14.0 Apr 12, 2024
2.13.3 Apr 08, 2024
2.13.2 Mar 30, 2024
2.13.1 Mar 29, 2024
2.13.0 Mar 27, 2024
2.12.4 Feb 26, 2024
2.12.3 Feb 01, 2024
2.12.2 Jan 20, 2024
2.12.1 Jan 17, 2024
2.12.0 Jan 17, 2024
2.11.2 Jan 02, 2024
2.11.1 Dec 14, 2023
2.11.0 Dec 14, 2023
2.10.4 Nov 24, 2023
2.10.3 Nov 16, 2023
2.10.2 Nov 16, 2023
2.10.1 Nov 07, 2023
2.10.0 Oct 26, 2023
2.9.3 Sep 25, 2023
2.9.2 Sep 12, 2023
2.9.1 Sep 03, 2023
2.9.0 Aug 31, 2023
2.8.2 Jul 31, 2023
2.8.1 Jul 26, 2023
2.8.0 Jul 15, 2023
2.8.0a2 Jun 30, 2023
2.8.0a1 Jun 27, 2023
2.8.0a0 Jun 27, 2023
2.7.4 Jun 13, 2023
2.7.3 Jun 13, 2023
2.7.2 Jun 12, 2023
2.7.1 Jun 06, 2023
2.7.0 May 29, 2023
2.6.1 May 10, 2023
2.6.0 May 09, 2023
2.5.6 May 07, 2023
2.5.5 May 05, 2023
2.5.4 May 05, 2023
2.5.3 Apr 19, 2023
2.5.2 Apr 10, 2023
2.5.1 Apr 09, 2023
2.5.0 Apr 09, 2023
2.5.0b0 Mar 29, 2023
2.4.9 Mar 16, 2023
2.4.8 Mar 09, 2023
2.4.7 Mar 02, 2023
2.4.6 Feb 20, 2023
2.4.5 Feb 10, 2023
2.4.4 Feb 10, 2023
2.4.3 Feb 06, 2023
2.4.2 Jan 31, 2023
2.4.1 Jan 28, 2023
2.4.0 Jan 12, 2023
2.3.4 Dec 27, 2022
2.3.3 Dec 15, 2022
2.3.2 Dec 08, 2022
2.3.1 Dec 05, 2022
2.3.0 Dec 02, 2022
2.2.1 Nov 03, 2022
2.2.0 Oct 31, 2022
2.1.5 Oct 05, 2022
2.1.4 Sep 17, 2022
2.1.3 Aug 30, 2022
2.1.2 Aug 15, 2022
2.1.1 Aug 05, 2022
2.1.0 Jul 29, 2022
2.0.3 Jul 22, 2022
2.0.2 Jul 20, 2022
2.0.1 Jul 17, 2022
2.0.0 Jul 15, 2022
2.0.0b2 Jul 08, 2022
2.0.0b1 Jul 02, 2022
2.0.0a1 Jun 29, 2022
1.15.5 Jul 23, 2022
1.15.4 Jun 28, 2022
1.15.3 Jun 14, 2022
1.15.2 Jun 06, 2022
1.15.1 Jun 01, 2022
1.15.0 May 16, 2022
1.14.1 Apr 21, 2022
1.14.0 Apr 08, 2022
1.13.6 Mar 28, 2022
1.13.5 Mar 23, 2022
1.13.4 Mar 09, 2022
1.13.3 Feb 24, 2022
1.13.2 Feb 20, 2022
1.13.1 Feb 18, 2022
1.13.0.post0 Feb 18, 2022
1.13.0 Feb 18, 2022
1.12.8 Feb 06, 2022
1.12.7 Jan 31, 2022
1.12.6 Jan 12, 2022
1.12.5 Jan 11, 2022
1.12.4 Jan 11, 2022
1.12.3 Jan 07, 2022
1.12.2 Dec 30, 2021
1.12.1 Dec 24, 2021
1.12.0 Dec 22, 2021
1.11.3 Dec 15, 2021
1.11.2 Dec 10, 2021
1.11.1 Dec 08, 2021
1.11.0 Nov 30, 2021
1.10.3 Nov 18, 2021
1.10.2 Nov 14, 2021
1.10.1 Nov 09, 2021
1.10.0 Oct 25, 2021
1.9.0 Oct 12, 2021
1.8.5 Sep 16, 2021
1.8.4 Sep 15, 2021
1.8.3 Sep 07, 2021
1.8.2 Sep 01, 2021
1.8.1 Aug 26, 2021
1.8.0 Aug 16, 2021
1.7.2 Jul 30, 2021
1.7.1 Jul 29, 2021
1.7.0 Jul 20, 2021
1.6.4 Jun 23, 2021
1.6.3 Jun 17, 2021
1.6.2 May 31, 2021
1.6.1 May 31, 2021
1.6.0 May 31, 2021
1.5.3 May 10, 2021
1.5.2 Apr 27, 2021
1.5.1 Apr 22, 2021
1.5.0.post1 Apr 20, 2021
1.5.0 Apr 20, 2021
1.5.0b1 Apr 12, 2021
1.5.0b0 Apr 03, 2021
1.4.5 Mar 30, 2021
1.4.4 Mar 27, 2021
1.4.3 Mar 24, 2021
1.4.2 Mar 18, 2021
1.4.1 Mar 12, 2021
1.4.0 Mar 05, 2021
1.3.4 Mar 01, 2021
1.3.3 Feb 26, 2021
1.3.2 Feb 25, 2021
1.3.1 Feb 19, 2021
1.3.0 Feb 09, 2021
1.2.0.post1 Jan 26, 2021
1.2.0 Jan 26, 2021
1.1.0 Jan 18, 2021
1.0.0 Jan 05, 2021
1.0.0b2 Dec 29, 2020
1.0.0b0 Dec 24, 2020
0.12.3 Dec 21, 2020
0.12.2 Dec 17, 2020
0.12.1 Dec 14, 2020
0.12.0 Dec 08, 2020
0.11.0 Nov 20, 2020
0.10.2 Nov 05, 2020
0.10.1 Nov 04, 2020
0.10.0 Oct 20, 2020
0.9.2 Oct 13, 2020
0.9.1 Oct 13, 2020
0.9.0 Oct 08, 2020
0.8.7 Sep 04, 2020
0.8.6 Jul 09, 2020
0.8.5 Jun 24, 2020
0.8.4 May 21, 2020
0.8.3 May 15, 2020
0.8.2 May 03, 2020
0.8.1 Apr 22, 2020
0.8.0 Apr 20, 2020
0.7.1 Apr 13, 2020
0.7.0 Apr 12, 2020
0.6.5 Apr 07, 2020
0.6.4 Apr 07, 2020
0.6.3 Mar 30, 2020
0.6.2 Mar 29, 2020
0.6.1 Mar 25, 2020
0.6.0 Mar 20, 2020
0.5.0 Mar 14, 2020
0.4.2 Mar 13, 2020
0.4.1 Mar 11, 2020
0.4.0 Mar 10, 2020
0.3.2 Mar 08, 2020
0.3.1 Mar 07, 2020
0.3.0 Feb 28, 2020
0.2.6 Feb 25, 2020
0.2.5 Feb 22, 2020
0.2.4 Feb 21, 2020
0.2.3 Feb 21, 2020
0.2.2 Feb 20, 2020
0.2.1 Feb 18, 2020
0.2.0 Feb 14, 2020
0.1.2 Feb 09, 2020
0.1.1 Feb 07, 2020
0.1.0 Feb 05, 2020
0.0.6 Feb 04, 2020
0.0.5 Jan 22, 2020
0.0.4 Jan 22, 2020
0.0.3 Jan 22, 2020
0.0.1 Jan 21, 2020
0.0.0 Apr 12, 2021

Wheel compatibility matrix

Platform Python 3
any

Files in release

Extras:
Dependencies:
blinker
packaging (>22.0)
platformdirs
rich (>=12.3.0)
virtualenv (>=20)
pyproject-hooks
unearth (>=0.17.5)
dep-logic (>=0.5)
findpython (<1.0.0a0,>=0.7.0)
tomlkit (<1,>=0.11.1)
shellingham (>=1.3.2)
python-dotenv (>=0.15)
resolvelib (>=1.1)
installer (<0.8,>=0.7)
truststore (>=0.10.4)
tomli (>=1.1.0)
importlib-metadata (>=3.6)
hishel (>=0.0.32)
pbs-installer (>=2025.10.7)
httpx[socks] (<1,>0.20)
filelock (>=3.13)
httpcore (>=1.0.6)
certifi (>=2024.8.30)
id (>=1.5.0)
cffi and (==1.17.1)
pycparser and (==2.22)
pywin32 and (==310)