Build Python/PyQt6 apps into standalone executables using Nuitka
Build ClawdBot UI into standalone executables for Windows and macOS using Nuitka.
Nuitka compiles Python code to native C executables. Benefits:
pip install nuitka
python -m nuitka --mode=onefile --enable-plugin=pyqt6 --windows-console-mode=disable --output-dir=dist main.py
python -m nuitka --mode=standalone --enable-plugin=pyqt6 --windows-console-mode=disable --output-dir=dist main.py
python -m nuitka --mode=app --enable-plugin=pyqt6 --macos-app-icon=assets/clawdbot.png --output-dir=dist main.py
Use Nuitka-Action for CI/CD builds.
- name: Build with Nuitka
uses: Nuitka/Nuitka-Action@main
with:
nuitka-version: main
script-name: main.py
mode: onefile # or standalone, app
enable-plugins: pyqt6
windows-console-mode: disable
output-file: MyApp
| Option | Values | Description |
|---|---|---|
mode |
onefile, standalone, app |
Output type |
enable-plugins |
pyqt6, pyside6 |
UI framework |
windows-console-mode |
disable, attach |
Hide console |
windows-icon-from-ico |
Path | Windows .ico icon |
macos-app-icon |
Path | macOS .png/.icns icon |
output-file |
Name | Output filename |
Located at: .github/workflows/build.yml
Triggers:
workflow_dispatch)Builds:
| Platform | Mode | Output |
|---|---|---|
| Windows | onefile | ClawdBot-Control-Panel-Windows.exe |
| macOS | app | ClawdBot-Control-Panel-macOS.app.zip |
Steps:
xcode-select --installUse --mode=standalone first to debug, then switch to --mode=onefile.
Ensure --enable-plugin=pyqt6 is set.
Normal for PyQt6 apps (~50-100MB). Nuitka includes Qt libraries.
Add --windows-console-mode=disable.
--show-progress for verbose local builds