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:

  1. Identifies the build backend from the project’s pyproject.toml
  2. Creates an isolated environment for build dependencies
  3. Installs the specified build requirements
  4. Invokes the backend’s build hooks defined in PEP 517
  5. 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

Please submit corrections and feedback...