What is PEP 517/518 compatibility?
PEP 517 and PEP 518 define standard interfaces for Python packaging tools to build and install packages. PEP 517 defines the interface for building packages, and PEP 518 defines the interface for specifying build dependencies.
These PEPs moved Python packaging from a setup.py-centric model to a
pyproject.toml-centric model.
PEP 517 creates a standard for Python packages that any packaging tool can adopt. PEP 518 specifies how Python software packages should specify their build dependencies to execute their chosen build system. PEP 518 introduced the pyproject.toml file.
Tools supporting these PEPs include setuptools, flit, poetry, and pdm.
See What is PEP 621 compatibility? to learn how pyproject.toml was extended to support package metadata.
Also Mentioned In
- How Python's RFC Process Paved the Way for uv, Ruff, and Ty
- The uv build backend is now stable
- build: Python Package Build Frontend
- How to Fix ModuleNotFoundError: No module named 'numpy' During pip Install
- pyproject.toml: Python Project Configuration File
- What is a build backend?
- What is a build frontend?
- What is PEP 660?
- Why You Should Try uv if You Use Python
Get Python tooling updates
Subscribe to the newsletter