Как упаковывают Python-приложения в AppImage?
Хочу упаковать в AppImage приложение на Python, использующее PyQt5. Думал, что должно быть просто, но не осилил. Само приложение: FlatCAM Beta.
Смотрю варианты: PyAppImage не поддерживает приложения на Qt, python-appimage может упаковать только приложения, устанавливаемые напрямую через pip. Вроде бы pkg2appimage может упаковать что угодно, смотрю пример.
Делаю примерно как в примере:
app: org.flatcam.FlatCAM
ingredients:
dist: jammy
sources:
- deb http://us.archive.ubuntu.com/ubuntu/ jammy jammy-updates jammy-security main universe
- deb http://us.archive.ubuntu.com/ubuntu/ jammy-updates main universe
- deb http://us.archive.ubuntu.com/ubuntu/ jammy-security main universe
packages:
- git
- libfreetype6
- libfreetype6-dev
- libgeos-dev
- libpng-dev
- libspatialindex-dev
- qt5-style-plugins
- python3.10-dev
- python3.10-gdal
- python3.10-pip
- python3.10-pyqt5
- python3.10-pyqt5.qtopengl
- python3.10-simplejson
- python3.10-tk
script:
- git clone -b Beta https://bitbucket.org/jpcgt/flatcam.git
- virtualenv usr
- sed -i 's/numpy>=1.16/numpy==1.21.6/' flatcam/requirements.txt
- sed -i 's/vispy$/vispy==0.7/' flatcam/requirements.txt
- sed -i 's/gdal$/gdal==3.4.1/' flatcam/requirements.txt
- ./usr/bin/pip3 install -r flatcam/requirements.txt
- mv flatcam/assets/linux/icon.png ./usr/share/icons/hicolor/256x256/flatcam.png
- sed -i 's|script_path=.*$|script_path=../flatcam|' flatcam/assets/linux/flatcam-beta
- mv flatcam/assets/linux/flatcam-beta ./usr/bin/
- sed -i 's|\./assets/icon.png|flatcam|' flatcam/assets/linux/flatcam-beta.desktop
- sed -i 's|\./bin/||' flatcam/assets/linux/flatcam-beta.desktop
- sed -i '5i Categories=Science' flatcam/assets/linux/flatcam-beta.desktop
- mv flatcam/assets/linux/flatcam-beta.desktop ./usr/share/applications/org.flatcam.FlatCAM.desktop
- cp ./usr/share/icons/hicolor/256x256/flatcam.png .
- cp ./usr/share/applications/org.flatcam.FlatCAM.desktop .
И всё вроде бы собирается, но при запуске не находится модуль PyQt5, хоть он и упаковался. Может, нужно как-то хитро запускать, подсовывая питону правильный путь, где модули искать?