Building on Linux
On Linux, pyzed build makes a folder, dist/Shop/, with an executable called Shop and everything it needs. No
signing is required.
Build it
Section titled “Build it”-
Install uv if you do not have it:
Terminal window curl -LsSf https://astral.sh/uv/install.sh | sh -
In the project folder, build:
Terminal window uv run pyzed buildTerminal window source .venv/bin/activatepyzed build # or: python -m pyzed build -
Try it:
Terminal window ./dist/Shop/Shop
Which distribution to build on
Section titled “Which distribution to build on”The app links against the C library (glibc) of the system it was built on, and runs on that version or newer. Build on the oldest distribution you want to support. For example, an app built on Ubuntu 22.04 runs on Ubuntu 22.04, 24.04 and later, and on other distributions with glibc 2.35 or newer, but not on Ubuntu 20.04.
Pyzed’s own wheels need glibc 2.28 or newer (manylinux_2_28), so that is the oldest base that can work. Alpine and
other musl-based systems need a build made on them.
What the target needs
Section titled “What the target needs”The app brings Python and Pyzed with it, but uses the system’s graphics and windowing libraries: a desktop session
with X11 or Wayland, libxkbcommon, and a Vulkan or OpenGL driver (Mesa on most systems). Every desktop distribution
has them; minimal server images may not.
Share it
Section titled “Share it”As an archive
Section titled “As an archive”The simplest way: an archive of the folder. People unpack it anywhere and run ./Shop/Shop.
tar -czf Shop-linux-x86_64.tar.gz -C dist Shop# or a zip, which the self-updater uses:(cd dist && zip -qr ../Shop-linux-x86_64.zip Shop)Name the zip <app>-linux-<arch>.zip if you plan to update the app by itself.
Add it to the application menu
Section titled “Add it to the application menu”A .desktop file makes the app appear in the desktop’s application menu, with its icon. Install it per user, no root
needed:
[Desktop Entry]Type=ApplicationName=ShopExec=/home/you/.local/share/shop/ShopIcon=/home/you/.local/share/shop/icon.pngCategories=Office;Terminal=falsePyzed Design’s Linux installer does exactly this: it downloads the release zip, checks it against the release’s
SHA256SUMS, unpacks it into ~/.local/share/pyzed-design, links a command into ~/.local/bin and adds the menu
entry. Its script, docs/public/install.sh, is
a good template for your own curl ... | sh installer.
AppImage, .deb, .rpm, Flatpak, Snap
Section titled “AppImage, .deb, .rpm, Flatpak, Snap”Things to know
Section titled “Things to know”- Architecture: the app is built for the machine it is built on:
x86_64, oraarch64on ARM (GitHub offers ARM runners too, see CI). - No GPU: on virtual machines without a GPU, start the app with the CPU renderer if the window stays blank; see Troubleshooting.
- Executable bit: zip files made on Windows lose the executable bit. Build and archive Linux apps on Linux.