pep517
Wrappers to build Python packages using PEP 517 hooks
Decision gist · record as of 2026-08-14
Yes, if you are building a build frontend or need subprocess isolation for PEP 517 backends. No, if you are packaging a single project—use the build package instead. The package is stable and well-maintained, but its deprecation status means new code should prefer pyproject-hooks or build unless you have a specific reason to use pep517 directly.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- You must manually ensure build requirements from pyproject.toml are installed in the environment before calling hooks.
- Low friction: pure Python wheel with three lightweight runtime dependencies (tomli, importlib_metadata, zipp).
- Active maintenance as of April 2026, though the package itself is deprecated in favor of pyproject-hooks and build.
License · maintenance · safety
permissive license (permissive) — MIT license (permissive): you can use this freely in commercial and private projects with minimal restrictions.
last release 2023-11-08 (1010 days) · last repo commit 2026-04-05 · 128 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 9,358,627 downloads/mo, #1,542 on PyPI
Alternatives
Verify before relying
import os
import tomli
from pep517.wrappers import Pep517HookCaller
src = 'path/to/source'
with open(os.path.join(src, 'pyproject.toml'), 'rb') as f:
build_sys = tomli.load(f)['build-system']
hooks = Pep517HookCaller(
src,
build_backend=build_sys['build-backend'],
backend_path=build_sys.get('backend-path'),
)
whl_filename = hooks.build_wheel('destination/folder', {})- Whether the package's deprecation status affects long-term support or if it remains stable for existing users.
- Performance characteristics when calling hooks in subprocess isolation versus direct backend invocation.
What it is and what it does
pep517 is a low-level wrapper around the PEP 517 and PEP 660 build system specifications for Python packages. It lets you call build backend hooks (like build_wheel, build_sdist) in an isolated subprocess, with fallbacks for optional hooks so you don't have to check which ones are defined. The package handles the mechanics of invoking a package's build backend without running it in your current process.
The package is now deprecated in favor of pyproject-hooks (lower level) and build (higher level), but remains actively maintained. It depends on tomli for reading pyproject.toml, plus importlib_metadata and zipp for compatibility. You are responsible for installing the build requirements specified in pyproject.toml before calling the hooks.
Use it for
- Build a Python wheel or sdist from a source directory with a PEP 517 backend, isolating the backend process.
- Query a build backend for its dynamic build requirements before installing them.
- Test whether a project's build backend is correctly configured using the command-line check tool.
- Implement a custom build frontend that needs to call multiple backends with subprocess isolation.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you are building a build frontend or need subprocess isolation for PEP 517 backends.
No, if you are packaging a single project—use the build package instead. The package is stable and well-maintained, but its deprecation status means new code should prefer pyproject-hooks or build unless you have a specific reason to use pep517 directly.
Install
pep517 on PyPI
Before you install
Low friction: pure Python wheel with three lightweight runtime dependencies (tomli, importlib_metadata, zipp). Active maintenance as of April 2026, though the package itself is deprecated in favor of pyproject-hooks and build.
You must manually ensure build requirements from pyproject.toml are installed in the environment before calling hooks.
License in practice
MIT license (permissive): you can use this freely in commercial and private projects with minimal restrictions.
Quickstart
import os
import tomli
from pep517.wrappers import Pep517HookCaller
src = 'path/to/source'
with open(os.path.join(src, 'pyproject.toml'), 'rb') as f:
build_sys = tomli.load(f)['build-system']
hooks = Pep517HookCaller(
src,
build_backend=build_sys['build-backend'],
backend_path=build_sys.get('backend-path'),
)
whl_filename = hooks.build_wheel('destination/folder', {})
Verify before relying
- Whether the package's deprecation status affects long-term support or if it remains stable for existing users.
- Performance characteristics when calling hooks in subprocess isolation versus direct backend invocation.
Package facts
| License | permissive license permissive |
| Python support | Supports the current Python release >=3.6 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 3 packagestomliimportlib_metadatazipp |
| Maintenance | Actively maintained 1,010 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 9,358,627 / month, #1,542 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | License :: OSI Approved :: MIT LicenseProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: Only |
Evidence: pep517-0.13.1-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “pep 517 build hooks”
- pep517Provides subprocess-isolated wrappers around PEP 517 and PEP 660…
- validate-pyprojectValidates pyproject.toml files against JSON Schema definitions to…
- buildBuilds Python packages in isolated environments, generating wheels…
Give your agent the search over MCP, or paste the wish link into any chat.
More Build Tools packages
Provides reusable utilities for Python packaging interoperability, including version handling, specifiers, markers, requirements, tags, and metadata parsing according to standards like PEP 440 and PEP 425.
Wraps any iterable to display a real-time progress bar in the terminal or Jupyter notebook, showing iteration count, elapsed time, and estimated time remaining.
pip is the standard installer for Python packages, enabling you to download and install packages from the Python Package Index and other indexes into your Python environment.
Hatchling is a standards-compliant Python build backend that handles packaging, metadata, and distribution of Python projects when configured in a project's pyproject.toml file.
Generates Python gRPC service stubs and message classes from Protocol Buffer definitions, enabling developers to build gRPC clients and servers.
pre-commit is a framework for installing and running git hooks written in any language before commits are made, automating code quality and validation checks across multi-language projects.
Install it if your team needs consistent, automated validation at commit time.
See also pyproject-hooks · build · meson-python · wheel-stub · pdm-pep517 · poetry-core · whool · PyQt-builder · logging · virtualenvwrapper