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:
uv run pyzed buildsource .venv/bin/activatepyzed build # or: python -m pyzed build.venv\Scripts\Activate.ps1pyzed build # or: py -m 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 |
From your project to your users
Section titled “From your project to your users”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"]
In this section
Section titled “In this section”Start hereHow building worksWhat gets bundled, every option in
pyproject.toml, PyInstaller or Nuitka, data files and the splash screen.Export from the designerFile → Export app… in Pyzed Design: platforms, backend, icon and splash screen in one dialog.WindowsThe .exe, folder or single file, a zip or an Inno Setup installer, and signing for SmartScreen.macOSThe .app bundle, bundle identifier, signing, notarization and a .dmg.LinuxWhich distribution to build on, archives, menu entries, and AppImage or .deb.Icons and metadataName, version, publisher, the icons made from one PNG and the macOS bundle identifier.CI with GitHub ActionsBuild all three systems on every tag, publish a release and sign with secrets.Self-updating appsCheck GitHub Releases, download with a checksum and swap the app on restart.TroubleshootingMissing modules, blank windows, blocked apps, glibc errors and update messages.CLI referenceEvery option of pyzed build and the other commands.What is supported today
Section titled “What is supported today”| 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 | ❌ | ❌ | ❌ |