Repolode
pdm-project

pdm-project/pdm

A modern Python package and dependency manager that manages venvs, lockfiles and builds based on PEP 621 and PEP 517 metadata.

Open-source alternative to:PoetryPipenv

Stars
8,662
Forks
501
Open issues
48
Last commit
yesterday

What is it?

PDM is a Python package and dependency manager that reads project metadata from a standard pyproject.toml file and writes a lockfile to pin exact dependency versions. It can create and manage virtual environments in either the project directory or a centralized location, similar to Pipenv, and it can also build wheels and source distributions and upload them to PyPI, similar to Poetry.

PDM includes a PEP 517 build backend and is not tied to a single build backend, so projects can use the backend of their choice. Functionality can be extended through a plugin system, and user-defined scripts are supported. It can also install Python interpreters using python-build-standalone, and offers an opt-in centralized installation cache.

PDM has experimental options for PEP 582 (installing packages into a local __pypackages__ folder instead of a venv) and for using uv as the installer.

Key features

  • 01Dependency resolver with lockfile support via pdm.lock
  • 02Virtual environment management in project or centralized locations
  • 03PEP 517 build backend and PEP 621 project metadata support
  • 04Plugin system and customizable user scripts
  • 05Can install Python interpreters via python-build-standalone
  • 06Opt-in centralized installation cache

Use cases

  • Managing dependencies and virtual environments for a Python application
  • Building and publishing a Python library to PyPI using standard pyproject.toml metadata
  • Migrating from Pipenv or Poetry to a PEP 621-based workflow

Quick start

  1. 1

    Install PDM with the installer script (Linux/Mac)

    curl -sSL https://pdm-project.org/install.sh | bash
  2. 2

    Create a new PDM project

    pdm new my-project
  3. 3

    Add dependencies to the project

    pdm add requests flask

Things to know

  • Requires Python 3.10 or higher.
  • The PEP 582 and uv integrations are marked as experimental.
  • uv does not work with PEP 582.

Topics

FAQ

What is pdm?
A modern Python package and dependency manager that manages venvs, lockfiles and builds based on PEP 621 and PEP 517 metadata. PDM is a Python package and dependency manager that reads project metadata from a standard pyproject.toml file and writes a lockfile to pin exact dependency versions. It can create and manage virtual environments in either the project directory or a centralized location, similar to Pipenv, and it can also build wheels and source distributions and upload them to PyPI, similar to Poetry.
Is pdm free to use? What license does it have?
pdm is open source under the MIT license. Check the license terms before using it in commercial products.
Is pdm still maintained?
Actively maintained. The last commit to pdm was on Oct 19, 2026.
What can I use pdm for?
Managing dependencies and virtual environments for a Python application Building and publishing a Python library to PyPI using standard pyproject.toml metadata Migrating from Pipenv or Poetry to a PEP 621-based workflow
How do I install pdm?
Install PDM with the installer script (Linux/Mac): curl -sSL https://pdm-project.org/install.sh | bash Create a new PDM project: pdm new my-project Add dependencies to the project: pdm add requests flask
Where can I get pdm?
The source code and installation instructions are on GitHub: https://github.com/pdm-project/pdm

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects