What is PEP 660?
PEP 660 standardizes how build backends implement editable installs, bringing consistency to a workflow that was previously tied to setuptools’ setup.py develop command.
Background
Before PEP 660, editable installs were only available through setuptools via pip install -e ., which internally ran setup.py develop. This meant that projects using other build backends like flit or hatch had no standardized way to support editable installs.
PEP 517 introduced a standard interface for build backends but did not include editable installs. PEP 660 fills that gap by defining two optional hook functions that build backends can implement:
build_editable— builds a wheel that, when installed, allows source changes to take effect without reinstallingget_requires_for_build_editable— declares any extra dependencies needed to build the editable wheel
How It Works
A build backend that supports PEP 660 produces a special wheel containing either a .pth file or an import hook that redirects imports to the source directory. This means changes to the package source are immediately reflected when importing the package, without running pip install again.
# With any PEP 660-compliant build backend
pip install -e .
# Or with uv
uv pip install -e .Impact
PEP 660 decoupled editable installs from setuptools, allowing the broader ecosystem of build backends to support this workflow. Today, most major build backends — including hatch, flit, pdm, and setuptools — implement PEP 660.