PDM vs Poetry: Which Python Dependency Tool for CI?
PDM is a standards-forward dependency manager with a lockfile; Poetry is the mature, widely-adopted default.
PDM manages dependencies and packaging using PEP 621 metadata, ships a lockfile, and historically explored PEP 582 (__pypackages__). Poetry is the established project-and-dependency manager with the largest ecosystem and docs.
| PDM | Poetry | |
|---|---|---|
| Metadata standard | PEP 621 native | Poetry-specific, PEP 621 supported newer |
| Lockfile | pdm.lock | poetry.lock |
| CI install | pdm install | poetry install --no-root |
| Plugin ecosystem | Growing | Large, mature |
| Adoption / familiarity | Smaller | Very widely used |
In CI
Both give you deterministic installs from a committed lockfile, so the day-to-day CI behavior is similar: commit the lock, cache the venv or wheel cache keyed on it, and installs are reproducible. PDM is appealing if you value PEP-621-native metadata and a lighter, standards-forward tool. Poetry is the safer default for team familiarity, the breadth of existing guides, and plugin coverage.
Choosing for pipelines
Want standards-native metadata and a leaner tool: PDM. Want the most documented, widely-known option: Poetry. If you are also weighing raw install speed, evaluate uv alongside both.
The verdict
Want PEP-621-native config and a standards-forward manager: PDM. Want the most mature, familiar ecosystem: Poetry. Both lock reproducibly - pick on standards vs familiarity, and consider uv for speed.