Application distribution in PyOxidizer is fundamentally a separate domain from building or packaging applications. One way to think about this is building is concerned with producing files constituting your application - the executables and support files needed at run-time - and distribution is concerned with installing those files on other machines.

PyOxidizer uses the Tugger tool to handle most distribution functionality. Tugger is a Rust crate and Starlark dialect developed alongside PyOxidizer that specializes in functionality required to distribute applications. Tugger is technically a separate project. But PyOxidizer provides full access to Tugger’s Starlark functionality and even extends it to make distributing Python applications simpler.

Using Tugger Starlark

Tugger defines a Starlark dialect that enables you to produce distributable artifacts. See Tugger Starlark Dialect for the documentation of this dialect.

The full Tugger Starlark dialect is available to PyOxidizer configuration files.

PyOxidizer configuration files have the option of using the generic Tugger Starlark primitives and using supplemental/extended functionality provided by PyOxidizer’s Starlark dialect. The Tugger-provided primitives are generally low-level and generic. The PyOxidizer-provided extensions are Python specific and may allow simpler configuration files.

See other documentation in Distributing User Guide for details on PyOxidizer’s extensions to Tugger’s Starlark dialect and how to perform common distribution actions.