A simple, correct Python build frontend.
See the documentation for more information.
build can be installed via pip or an equivalent via:
$ pip install build$ python -m buildThis will build the package in an isolated environment, generating a
source-distribution and wheel in the directory dist/. See the
documentation for full information. Build is also
available via the command line as pyproject-build once installed.
- --sdist(- -s): Produce just an SDist
- --wheel(- -w): Produce just a wheel
- --metadata: Produce just the metadata as JSON. Cannot be used with- --sdist/- --wheel.
- -C<option>=<value>: A Config-setting, the PEP 517 way of passing options to a backend. Can be passed multiple times. Matching options will make a list. Note that setuptools has very limited support.
- --config-json=<value>: An alternative way to pass in complex config settings as JSON strings. Can't be used with- -C.
- --installer: Pick an installer for the isolated build (- pipor- uv).
- --no-isolation(- -n): Disable build isolation.
- --skip-dependency-check(- -x): Disable dependency checking when not isolated; this should be done if some requirements or version ranges are not required for non-isolated builds.
- --outdir(- -o): The output directory (defaults to- dist)
Some common combinations of arguments:
- --sdist --wheel(- -sw): Produce and SDist and a wheel, both from the source distribution. The default (if no flag is passed) is to build an SDist and then build a wheel from the SDist.
- -nx: Disable build isolation and dependency checking. Identical to pip and uv's- --no-build-isolationflag.
- --metadata | jq -r .version: get the version in a bash-like environment.
If you use pipx, such as in GitHub Actions, the following command will download and run build in one step:
$ pipx run buildIf you want to use uv to speed up the virtual environment creation, you can
use --installer=uv. You can get a Python wheel for uv with the [uv]
extra. For example, using pipx like above:
$ pipx run 'build[uv]' --installer uvIf you already have uv, you don't need the extra. For example:
$ uvx --from build pyproject-build --installer uvIf you are using cibuildwheel, build is integrated and the default builder in 3.0+. If you want to use uv as the installer, you can use:
[tool.cibuildwheel]
build-frontend = "build[uv]"(Be sure to pre-install uv before running cibuildwheel for this one!)
On conda-forge, this package is called python-build.
Everyone interacting in the build's codebase, issue trackers, chat rooms, and mailing lists is expected to follow the PSF Code of Conduct.