Installation

pyappdist is a build-time tool. Add it to your application project’s development dependencies and run it from there.

uv add --dev pyappdist

Any PEP 517/621 project works (uv, poetry, hatch, pdm, plain pip). If you do not use uv, install pyappdist into the environment you build from in the usual way, e.g. pip install pyappdist or poetry add --group dev pyappdist.

The Python runtime itself is downloaded from python-build-standalone and cached under ~/.cache/pyappdist/runtime; you do not install it yourself.

Build-time toolchain

pyappdist builds the app wheel with python -m pip, so producing the wheelhouse and the runtime image needs nothing beyond pip. Producing the final package needs a per-format toolchain, documented on each format’s page:

  • MSI — MSVC build tools + WiX v5.

  • MSIX — MSVC build tools + makeappx (Windows SDK).

  • Linux / macOS — none beyond pip and the chosen compressor (the launchers are shell wrappers).

Each format is built on its own OS. When a format’s OS doesn’t match the build host, the package step is skipped and only the image is produced — except that a Windows MSI/MSIX can also be cross-built from WSL (see below).

Package manager (for dependency pinning)

Dependencies are pinned from your project’s lockfile, exported via your package manager (uv / poetry / pipenv / PDM). The relevant tool must be available at build time. See Dependency resolution for details.