Skip to content

Distribute

Distribute your app

Turn your project into an app people can download and run on Windows, macOS and Linux, without installing Python.

When your app works on your machine, pyzed build (or File → Export app… in Pyzed Design) packages it with PyInstaller or Nuitka: Python, Pyzed, your dependencies, your code and your forms go into one folder (or one file) that runs on its own. The people who use it do not need Python, pip or anything else. Run it from the root of your project:

Windows, macOS and Linux
uv run pyzed build
You build on You get People run it by
Windows dist\Shop\Shop.exe Double-clicking it, from a zip or an installer
macOS dist/Shop.app Opening it (sign and notarize it to share it)
Linux dist/Shop/Shop ./Shop, or from the application menu
flowchart LR
    P["Your project<br/>pyproject.toml · ui/ · src/"] --> B["pyzed build<br/>(PyInstaller or Nuitka)"]
    B --> W["Windows<br/>Shop.exe"]
    B --> M["macOS<br/>Shop.app"]
    B --> L["Linux<br/>Shop/Shop"]
    W --> S["Sign · zip · installer"]
    M --> S
    L --> S
    S --> R["GitHub Release"]
    R -. "pyzed.updater" .-> U["Installed apps<br/>update themselves"]
Windows macOS Linux
App folder (pyzed build) ✅ .exe ✅ .app ✅ executable
Single file (--onefile) ✅ ✅ ✅
PyInstaller or Nuitka (--backend) ✅ ✅ ✅
x64 and ARM ✅ ✅ ✅
Icon from one PNG (icon =) ✅ .ico + window ✅ .icns ✅ window; menu through a .desktop file
File details (version, publisher…) ✅ ✅ Info.plist -
Splash screen ✅ ✅ ✅
CI workflow (--workflow) and release archives ✅ ✅ ✅
Self-update (pyzed.updater) ✅ ✅ ✅
Signing With signtool With codesign + notarization Not needed
Installer Your own (Inno Setup, WiX) Your own .dmg (hdiutil) Your own (archive, script, AppImage…)
Cross-compiling ❌ ❌ ❌