mirror of https://github.com/pypa/pep517.git
2.2 KiB
2.2 KiB
PEP 517 specifies a standard API for systems which build Python packages.
This package contains wrappers around the hooks specified by PEP 517. It provides:
- A mechanism to call the hooks in a subprocess, so they are isolated from the current process.
- Fallbacks for the optional hooks, so that frontends can call the hooks without checking which are defined.
- Higher-level functions which install the build dependencies into a temporary environment and build a wheel/sdist using them.
Run the tests with py.test
.
High level usage, with build requirements handled:
import os
from pep517.envbuild import build_wheel, build_sdist
= 'path/to/source' # Folder containing 'pyproject.toml'
src = 'also/a/folder'
destination = build_wheel(src, destination)
whl_filename assert os.path.isfile(os.path.join(destination, whl_filename))
= build_sdist(src, destination)
targz_filename assert os.path.isfile(os.path.join(destination, targz_filename))
Lower level usage—you are responsible for ensuring build requirements are available:
import os
from pep517.wrappers import Pep517HookCaller
= 'path/to/source' # Folder containing 'pyproject.toml'
src = Pep517HookCaller(src)
hooks print(hooks.build_sys_requires) # List of static requirements
= {} # Optional parameters for backend
config_options # List of dynamic requirements:
print(hooks.get_requires_for_build_wheel(config_options))
= 'also/a/folder'
destination = hooks.build_wheel(destination, config_options)
whl_filename assert os.path.isfile(os.path.join(destination, whl_filename))
To test the build backend for a project, run in a system shell:
python3 -m pep517.check path/to/source # source dir containing pyproject.toml
To build a backend into source and/or binary distributions, run in a shell:
python -m pep517.build path/to/source # source dir containing pyproject.toml
This 'build' module should be considered experimental while the PyPA decides on the best place for this functionality.