Skip to main content

Python package builder and installer for non-pip-centric world

Project description

gpep517 is a minimal tool to aid building wheels for Python packages through PEP 517-compliant build systems and installing them. The tool originated from Gentoo with its primary goals being absolutely minimal dependency footprint to ease clean bootstrap without bundling dependencies, and clean separation of functions to aid external package managers. It is the tool of choice for a world that does not revolve around pip and venvs.

Change log

v12
  • add --sysroot option for experimental cross-compilation support

v11
  • test fixes and refactorings

v10
  • create specified --wheel-dir automatically

v9
  • add --optimize option to byte-compile while installing

  • include implicit setuptools fallback in build-wheel

  • add install-from-source command combining building a wheel and installing it

  • add progress reporting via logging

v8
  • improve .pyc checking to use verification data from the file header

v7
  • add verify-pyc command to aid verifying whether all Python modules were compiled to .pyc files correctly

v6
  • strip current working directory from sys.path prior to importing the build backend

v5
  • fix zipfile hack not to break reading compressed zipfiles

v4
  • patch zipfile compression out by default to improve performance

  • fix Python < 3.9 compatibility

v3
  • add --config-json to specify backend options

v2
  • fix not preserving backend-path for backend invocation

  • support tomllib in Python 3.11+

v1
  • initial version with wheel building and installation support

Commands

gpep517 implements the following commands:

  1. get-backend to read build-backend from pyproject.toml (auxiliary command).

  2. build-wheel to call the respeective PEP 517 backend in order to produce a wheel.

  3. install-wheel to install a wheel into the specified directory,

  4. install-from-source that combines building a wheel and installing it (without leaving the artifacts),

  5. verify-pyc to verify that the .pyc files in the specified install tree are correct and up-to-date.

Dependencies

gpep517 aims to minimize the dependency footprint to ease bootstrap. At the moment, it depends on two packages:

  1. tomli for TOML parsing in Python < 3.11

  2. installer for wheel installation

Additionally, PEP 517 build requires flit_core. However, the package can be used from the source tree or manually installed without that dependency.

Running the test suite requires pytest and flit_core (as provided by the test extra). Additional build systems can be installed to extend integration testing (test-full extra). A tox file is also provided to ease running tests.

Examples

The simplest way to install a package from the current directory is to use the install-from-source command, e.g.:

gpep517 install-from-source --destdir install --optimize all

gpep517 can also be used as a thin wrapper over the installer package, to install a prebuilt wheel:

gpep517 install-wheel --destdir install --optimize all \
    gpep517-8-py3-none-any.whl

Alternatively, the wheel can be built and installed separately. Notably, this leaves the built wheel in the specified directory for reuse:

set -e
mkdir -p dist
wheel_name=$(
    # the output forwarding trick guarantees that the underlying
    # backend will not output into ${wheel_name}
    gpep517 build-wheel --output-fd 3 --wheel-dir dist \
        3>&1 >&2
)
gpep517 install-wheel --destdir install "dist/${wheel_name}"

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gpep517-12.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

gpep517-12-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file gpep517-12.tar.gz.

File metadata

  • Download URL: gpep517-12.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for gpep517-12.tar.gz
Algorithm Hash digest
SHA256 1f0c76ffbc33610490f0eaf344e6c66bf87a521f5eb441f534f1d42666eb61b9
MD5 79f5073e243c9cd298dd1eacd0eaf1be
BLAKE2b-256 2f5486f8e67b7b4d78f7b8f0bf09e559c8d3c038d5793e2de3e73ea4e39cb10a

See more details on using hashes here.

File details

Details for the file gpep517-12-py3-none-any.whl.

File metadata

  • Download URL: gpep517-12-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for gpep517-12-py3-none-any.whl
Algorithm Hash digest
SHA256 c0357aae1eba8c70d6a3373d4fb48897feb7747ebcc75cc20350620e329e89b0
MD5 aba9bec7be643e9f0fb28362d4de9b7c
BLAKE2b-256 b9c9c3ffa6ef1334b6efd031eb84989f29f0f82913887e838ac0b703edfa1a6d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page