A Python testing framework that makes it easy to write small tests and scales to complex functional testing for applications and libraries.
- 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
Install PDM with the installer script (Linux/Mac)
curl -sSL https://pdm-project.org/install.sh | bash - 2
Create a new PDM project
pdm new my-project - 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
Open-source inventory management system with stock control, part tracking, a REST API and a plugin system, built on Python and Django.
Self-hosted, open-source workout, nutrition and body weight tracker built on Django, with a REST API and companion mobile apps.
A Python client library for Kubernetes with an API modeled on kubectl, offering sync and async (asyncio/trio) interfaces.
Turns a topic or keyword into a finished short video, handling script, voiceover, footage, subtitles and music automatically.
Apache Answer is an open-source Q&A platform for building community forums, help centers, and knowledge management sites.