PyEmpaq is a simple but powerful Python packer to run any project with any virtualenv dependencies anywhwere.
With PyEmpaq you can convert any Python project into a single .pyz file with all the project’s content packed inside.
That single file is everything that needs to be distributed. When the final user executes it, the original project will be expanded, its dependencies installed in a virtualenv, and then executed. Note that no special permissions or privileges are required, as everything happens in the user environment.
Both the packaging and the execution are fully multiplatorm. This means that you can pack a project in Linux, Windows, MacOS or whatever, and it will run ok in Linux, Windows, MacOS or whatever. The only requirement is Python to be already installed.
What’s new in this version?
Fixed a bug when using entrypoint method of project execution when unpacking.
Upgraded Pydantic dependency version to 2.x.x for handling configuration
Shiv and pex are “ahead of time” dense (larger size) archives that include application code and dependencies for a single target platform. Hermetic and deterministic installation.
PyEmpaq is a sparse (smaller size)archive. It only includes the application code and at first-run will create and install the rest into a virtualenv. A bit like using pipx to install an application, except without needing to teach the end-user about pipx. It’s self installing. Non-hermetic and non-deterministic installation, but may not matter in practice.