ABCarus can run the import/export tools (xml2abc, abc2xml) using either:
- a bundled Python runtime shipped with the app (preferred), or
- system Python (
python3/python) as a fallback.
This is intentionally “tolerant-read / strict-write”: if Python is unavailable, the app should refuse import/export clearly rather than guessing.
Place an embeddable/runtime Python distribution in:
third_party/python-embed/<platform-arch>/
Supported platform-arch values:
win-x64darwin-x64darwin-arm64linux-x64
Expected executable names:
- Windows:
python.exe(optionallypython3.exe) - macOS/Linux:
python3(optionallypython)
These folders are gitignored in development. They are expected to be shipped via app.asar.unpacked in packaged builds.
At runtime, ABCarus resolves Python in this order:
- Linux AppImage:
${APPDIR}/usr/bin/python3(if present) - Packaged app:
<resources>/app.asar.unpacked/third_party/python-embed/<platform-arch>/<python> - Dev tree:
<repo>/third_party/python-embed/<platform-arch>/<python> - System fallback:
- Linux/macOS:
python3, thenpython - Windows:
python
- Linux/macOS:
When executing a bundled runtime, ABCarus sets:
PYTHONUTF8=1PYTHONIOENCODING=utf-8PYTHONHOME=<runtime dir>(only for bundled runtimes)
System Python is not forced to use PYTHONHOME.
The AppImage build bundles the runtime into the AppDir under usr/ so it can be executed via ${APPDIR}/usr/bin/python3. This is independent of the dev convention above.