FREEDOM251

Freedom251 › Package Managers

PDM

Free plan LinuxMacWindows

Visit PDM Alternatives

PDM's own site

What PDM is

PDM is a free Python package and dependency manager that supports current PEP standards. It resolves dependencies and records package versions, artifact hashes, dependencies, and environment markers in a lockfile, normally pdm.lock. It supports its own lock format and an experimental PEP 751 pylock format. PDM can create projects or initialize existing ones with pyproject.toml, and manage dependencies in virtual environments or a __pypackages__ directory. It handles packages from local paths, direct web URLs, and version-control repositories including Git, Mercurial, Subversion, and Bazaar. Other capabilities include a PEP 517 build backend, PEP 621 project metadata, plugins, user scripts, and optional centralized installation caching. PDM can import projects from Pipenv, Poetry, Flit, requirements.txt, and setuptools setup.py inputs. It runs on Windows, Linux, and macOS, and lists installation options including installer scripts, Homebrew, Scoop, uv, pipx, pip, and asdf. The recommended installation documentation calls for Python 3.10 or later, while the Python-script installation section says Python 3.9 or later.

Who it suits

PDM suits Python developers who want dependency resolution and lockfiles, project metadata support, or migration from other project inputs. It is available for Windows, Linux, and macOS.

What it does well

  • Free to use
  • Supports dependency locking
  • Can initialize projects with pyproject.toml
  • Works with several version-control sources
  • Can import from Pipenv and Poetry

What to know first

  • PEP 582 support is experimental and opt-in
  • Installation documentation gives different Python minimums
  • PEP 751 lockfile format is experimental

Limits

PEP 582 support is experimental and must be enabled separately. The recommended installation documentation requires Python 3.10 or higher, while the Python-script installation section supports Python 3.9 or higher.

Getting started

  1. Open the PDM website
  2. Install PDM with an installer script or a supported tool such as Homebrew, Scoop, uv, pipx, pip, or asdf
  3. Use Python 3.10 or newer for the recommended installation path
  4. Create a project or initialize an existing project with pyproject.toml
  5. Choose a virtual environment or a __pypackages__ directory for dependencies

Verdict

PDM brings project setup, dependency management, locking, and publishing into a Python-focused tool. Note the experimental status of PEP 582 and PEP 751 support, and check the installation instructions for the Python version relevant to your method.

Questions

Is PDM free?

Yes. PDM has a free plan and no free trial.

Which operating systems does PDM support?

PDM works on Windows, Linux, and macOS.

Which Python versions are supported?

The recommended installation documentation requires Python 3.10 or higher. Its Python-script installation section says Python 3.9 or higher.

Does PDM support dependency lockfiles?

Yes. It normally stores locked resolution in pdm.lock and also supports an experimental PEP 751 pylock format.

Can PDM publish packages?

Yes. The pdm publish command builds wheel and source distributions and uploads them to PyPI by default, or to another repository.

Can PDM migrate existing projects?

Its import command supports Pipenv, Poetry, Flit, requirements.txt, and setuptools setup.py inputs.

Facts from PDM's own pages

Build backend
PDM can act as a PEP 517 build backend. · pdm-project.org, 3 Oct 2026
Credential storage
When keyring is available and supported, PDM stores and retrieves package index and upload repository passwords through keyring. · pdm-project.org, 3 Oct 2026
Dependency locking
PDM synchronizes dependencies using a locked resolution, normally stored in pdm.lock, which records package versions, artifact hashes, dependencies and markers. · pdm-project.org, 2 Oct 2026
Dependency resolution
PDM provides a dependency resolver described as simple and fast, particularly for large binary distributions. · pdm-project.org, 2 Oct 2026
Environment options
PDM can use a virtual environment or install project dependencies into a __pypackages__ directory. · pdm-project.org, 2 Oct 2026
Experimental feature
PEP 582 support is experimental and opt-in, alongside virtual environment management. · pdm-project.org, 3 Oct 2026
Free plan
Yes · pdm-project.org, 21 Sept 2026
Installation cache
PDM offers an opt-in centralized installation cache. · pdm-project.org, 3 Oct 2026
Installation methods
The documentation lists installer scripts and installation through Homebrew, Scoop, uv, pipx, pip and asdf. · pdm-project.org, 3 Oct 2026
Lockfile support
Yes · pdm-project.org, 21 Sept 2026
Lock formats
PDM supports its native pdm lock format and experimental PEP 751 pylock format. · pdm-project.org, 2 Oct 2026
Metadata
PDM supports project metadata in the PEP 621 format. · pdm-project.org, 3 Oct 2026
Migration
PDM's import command supports Pipenv, Poetry, Flit, requirements.txt and setuptools setup.py project inputs. · pdm-project.org, 2 Oct 2026
Offline installation
Yes · pdm-project.org, 21 Sept 2026
Package formats
wheel,sdist · pdm-project.org, 21 Sept 2026
Package sources
PDM can use PyPI and configurable custom package indexes or repositories, with options to verify SSL certificates. · pdm-project.org, 3 Oct 2026
Plugins
PDM has a flexible plug-in system. · pdm-project.org, 2 Oct 2026
Plugins and scripts
PDM provides a plug-in system and user scripts. · pdm-project.org, 3 Oct 2026
Private registry auth
Yes · pdm-project.org, 21 Sept 2026
Product
PDM is a Python package and dependency manager that supports current PEP standards. · pdm-project.org, 2 Oct 2026
Project metadata
PDM supports PEP 621 project metadata. · pdm-project.org, 2 Oct 2026
Project setup
PDM can create a new project or initialize an existing one with a pyproject.toml file. · pdm-project.org, 2 Oct 2026
Publishing
The pdm publish command builds a wheel and source distribution and uploads them to PyPI by default, and can target another repository. · pdm-project.org, 3 Oct 2026
Purpose
PDM is a Python package and dependency manager that supports current PEP standards. · pdm-project.org, 3 Oct 2026

Where PDM stands on Freedom251

Look at these too