build
build is a PEP 517-compliant Python package builder developed by the Python Packaging Authority (PyPA). It provides a standardized interface for building Python packages using any compliant build backend, serving as a simple frontend tool that executes the build process defined by backends like setuptools, flit, or hatchling.
ℹ️
uv does not require build and implements a
similar interface with
uv build
.Core Functionality
Build Operations
- Source Distributions: Creates sdist packages containing source code
- Binary Distributions: Builds wheel packages for direct installation
- Backend Compatibility: Works with any PEP 517-compatible build backend
- Isolated Builds: Manages build dependencies in separate environments
- Cross-Platform Support: Functions consistently across operating systems
Command Interface
# Build both wheel and sdist
python -m build
# Build only a wheel
python -m build --wheel
# Build only a source distribution
python -m build --sdist
# Build in a specified directory
python -m build /path/to/project
# Build with specific Python interpreter
python -m build --python-executable /path/to/python
Technical Design
build operates using a straightforward process flow:
- Identifies the build backend from the project’s pyproject.toml
- Creates an isolated environment for build dependencies
- Installs the specified build requirements
- Invokes the backend’s build hooks defined in PEP 517
- Places built distributions in the
dist/
directory
Configuration
build requires minimal configuration, as it delegates most settings to the build backend:
# Required pyproject.toml configuration
[build-system]
requires = ["setuptools>=42", "wheel"]
build-backend = "setuptools.build_meta"
Pros
- Standard Compliance: Fully implements PEP 517/518 specifications
- Tool Agnostic: Works with any compliant build backend
- Simple Interface: Minimal learning curve for basic usage
- Official PyPA Tool: Maintained by the Python Packaging Authority
- Isolation: Prevents contamination from the development environment
Cons
- Limited Features: Focused solely on building, not installing or publishing
- Requires Configuration: Needs a properly configured pyproject.toml
- No Direct Publishing: Requires additional tools (like twine) for PyPI k uploads
- Minimal Interface: Lacks advanced customization options
Learn More
Last updated on