What is a build backend?
A build backend is a Python package that implements standardized interfaces for building and installing Python packages, as defined in PEP 517. It handles tasks like:
- Converting source code into packages (wheels and sdists)
- Managing build-time dependencies
- Installing packages into environments
ℹ️
Build backends separate package creation from package management like pip, allowing any compliant tool to build Python packages.
Common Build Backends
- setuptools.build_meta: Traditional choice, supports complex builds and C extensions
- hatchling: Modern backend from Hatch project
- flit_core: Lightweight backend focused on pure Python packages
- maturin: Specialized for Rust extensions
- scikit-build-core: Handles C/C++/Fortran with CMake
Configuration
Build backends are specified in pyproject.toml:
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
The requires
field lists packages needed during the build process.
⚠️
Not all backends support every feature. Choose based on your project’s needs (pure Python vs extensions, development workflow, etc.).
Last updated on