A command-line utility for building self-contained Python zipapps with all dependencies included, following PEP 441.
shiv is a command-line utility that builds self-contained Python zip applications (.pyz files) with all their dependencies included. It implements PEP 441 for zipapp creation while solving the dependency packaging problem, allowing developers to distribute Python applications as single executable files.
Python developers and DevOps engineers who need to distribute Python applications as portable, self-contained executables without complex installation procedures.
Developers choose shiv because it provides a simple, standards-compliant way to package Python applications with dependencies into single executable files, making distribution significantly easier than traditional packaging methods.
shiv is a command line utility for building fully self contained Python zipapps as outlined in PEP 441, but with all their dependencies included.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Bundles all Python dependencies into a single .pyz file, enabling distribution as a single executable without external dependency management.
Implements the official Python zip application specification, ensuring compatibility with Python's built-in tools while extending it for dependencies.
Uses a pip-like command syntax, making it intuitive for developers familiar with Python packaging to create executables with minimal commands.
Can create pyz files that launch into interactive Python consoles with pre-loaded libraries, useful for debugging or exploratory work.
Prioritizes ease and speed in application distribution, as highlighted in the README, by reducing packaging complexity.
As admitted in the gotchas, zipapps with C extensions may not work across different architectures, limiting portability for many real-world packages.
Defaults to extracting to ~/.shiv without automatic cleanup, which can accumulate files and require manual management, as noted in the documentation.
Requires Python >= 3.8, excluding use in environments with older Python versions and adding constraints for legacy systems.
Creates static executables that must be rebuilt for updates, unlike dynamic package managers that allow in-place upgrades or version switching.