Skip to main content

Make a Python-native .chub installer from wheels and their dependencies.

Project description

pychub

Welcome to pychub! This README is a quick overview of the project. It is meant to give you the fastest possible overview. For more details, see the very comprehensive USER_GUIDE.

Overview

pychub is a packaging tool that bundles your Python wheel and all of its dependencies into a single, self-extracting .chub file.

It’s like a "wheel extension": it still uses your host Python interpreter, but comes with all dependencies and extras pre-downloaded, so installs are predictable, reproducible, and network-free.

To be clear, pychub does not compete with any other post-build packaging tools. Any of the various tools in this space might fit your needs better than any of the others. Each of these tools has overlap with the others, and each shines in their particular target areas. Likewise, pychub is most useful when you want a bundle that you can ship to any machine, regardless of the environment, and install the wheels and dependencies persistently.

⚠️ Platform Compatibility and Wheel Portability

A .chub file is only portable across environments if all bundled wheels are universal. That means:

  • Pure-Python wheels (py3-none-any)
  • Platform-independent manylinux wheels
  • Universal2 wheels (for macOS)

If your package or its dependencies include compiled extensions (e.g., numpy, Pillow, pydantic-core), the resulting .chub will only work on the platform it was built for — and only with the matching Python version and ABI.

In these cases, the .chub file is not cross-platform. In an upcoming release, pychub will warn or fail on such builds unless explicitly overridden.

In practice, many popular packages include native extensions, so full cross-platform compatibility is rare unless your dependencies are pure Python.

Quickstart

While pychub has quite a few features, you can get started with just two commands in your shell, and you can see it demonstrate its simplest feature.

Build a .chub from your wheel:

pychub dist/mypackage-1.0.0-py3-none-any.whl

Run (extract/install) it anywhere with Python 3.9+:

python mypackage-1.0.0.chub

That’s it — no pip, no network, no surprises.

Features

  • Single-file distribution — ship a .chub anywhere.
  • Network-free installs — dependencies are already inside the bundle.
  • Environment agnostic — works with system Python, venv, or conda.
  • Optional entrypoint — run your tool right after installation.
  • Extras included — add configs, docs, or scripts if you want.

Build tool integration

Use your favorite build system with a companion plugin:

See the pychub-build-plugins repo.

If you use another build system, please consider requesting, or even contributing, a plugin for it!

Learn more

For a full walkthrough with CLI options, examples, comparison tables, and roadmap, see the USER_GUIDE.


Released under the MIT License.

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

pychub-1.1.1.tar.gz (25.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pychub-1.1.1-py3-none-any.whl (34.4 kB view details)

Uploaded Python 3

File details

Details for the file pychub-1.1.1.tar.gz.

File metadata

  • Download URL: pychub-1.1.1.tar.gz
  • Upload date:
  • Size: 25.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pychub-1.1.1.tar.gz
Algorithm Hash digest
SHA256 1f82714ec67683c1ff3a38a657e473de92b90a516a495ec1eb3e35572fd7b056
MD5 9e53ef9395fa2511ceabea54e549fcb7
BLAKE2b-256 6756ea7f2e1f98e0997c4b366b3f8471cec7349afe13de70a0a152d2675268f6

See more details on using hashes here.

File details

Details for the file pychub-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: pychub-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 34.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pychub-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bb897d87f411760c84ffa39dfcdfdaa4b54796869c153a64ff692dc7aeac0954
MD5 395e103857813a264c2980862c64bb8d
BLAKE2b-256 8d68032b19a7128deacfcf60d2615bf28b5c7625765261020c263f2f1f91e8bf

See more details on using hashes here.

Supported by

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