appimage
The appimage module packages Python applications as self-contained AppImages.
It bundles a complete Python distribution from python-build-standalone, manages entry points, and supports virtual environments that extend the bundled packages with additional ones.
The bundled interpreter comes from python-build-standalone — the exact same source as
uv python install. What you develop with locally is what gets shipped in the AppImage.
Note
AppImage is a Linux-only format. Building and running AppImages requires Linux.
Supported architectures: x86_64, aarch64, armv7.
appimagetool is resolved automatically: if it is already on PATH it is used as-is; otherwise the build cache is checked, and finally it is downloaded. The same caching logic applies to the bundled Python distribution.
Install
pip install appimage
Build
python -m appimage.build
app, entry_point, and python version are detected automatically from [project] in your existing pyproject.toml — no appimage-specific configuration required. The .desktop file and AppRun script are generated automatically. If no icon is found a built-in default icon is used — add myapp.png to your project root to use your own.
The AppImage is written to dist/myapp-x86_64.AppImage (or the matching architecture name).
Tip:
appimage-buildis also available as a standalone command after installation.
Check what was detected
python -m appimage.build --check
Build configuration:
app: myapp [project] name
entry_point: myapp [project] scripts
python: 3.11 [project] requires-python
packages: . default (.)
icon: myapp.png detected (myapp.png)
desktop: (generated) will be generated
build_dir: build default
dist_dir: dist default
Write detected values to pyproject.toml
python -m appimage.build --init
Adds only the auto-detected fields that are not already set — so you can review and adjust them.
Integration with hatch
[tool.hatch.envs.appimage]
dependencies = ["appimage"]
[tool.hatch.envs.appimage.scripts]
build = ["python -m appimage.build"]
hatch run appimage:build