Ein Python Script als Appimage bauen
Beschreibung:
Es gibt situationen, da möchte man gerne ein python script mit all seinen abhängigkeiten gerne als eine einzige Executable haben. Mit App image und env ist dies machbar. Es können sogar Parameter an das pythonscript übergeben werden.
Erstellung:
Als erstes unser Project VErzeichnis erstellen. MyApp natürlich mit dem namen des Projektes oder dateinamen des scriptes ersetzen. Ich nenne das prject nextcloudimport
mkdir MyApp.AppDir
Nun in das Verzeichnis gehen und ein ENV erstellen. Ein ENV ist eine Virtualumegebung für python.
cd MyApp.AppDir
virtualenv --no-download AppRun
source AppRun/bin/activate
Beispiel:
cd nextcloudimport.AppDir
virtualenv --no-download python_env
source python_env/bin/activate
Nun alle abhängigkeiten installieren die unser script braucht
pip install --upgrade pip
pip install <Ihre benötigten Pakete>
Beispiel:
pip install --upgrade pip
pip install requests
pip install BeautifulSoup4
pip install tabulate
pip install qrcode
pip install reportlab
Nun die apprun wieder deaktivieren
deactivate
Nun das eigentliche Script reinkopieren.
In diesem Fall kommt der importer von https://github.com/t-markmann/nc-userimporter
Die datei nc-userimporter.py ins AppDir Verzeichnis kopieren.
Launcher Script erstellen
nano AppRun
Inhalt:
#!/bin/bash
DIR="$(dirname "$(readlink -f "$0")")"
$DIR/python_env/bin/python $DIR/your_script.py "$@"
Beispiel:
#!/bin/bash
DIR="$(dirname "$(readlink -f "$0")")"
$DIR/python_env/bin/python $DIR/nc-userimporter.py "$@"
AppRun ausführbar machen
chmod +x AppRun
Icon und .desktop-Datei hinzufügen
Eine .desktop erstellen, die muss im auch im Hauptverzeichnsi von myapp.AppDIr liegen.
Wnn ein icon gewüncht ist eine png mit 32x32 pixeln, wir nehmen hier das Nextcloud icon Papirus-Team-Papirus-Apps-Nextcloud.32.png
diese dann in nextcloudimport.png umbenennen.
Für dien Schlüssel können hier diese Nachgeschlagen werden, welche zur Verfügung stehen :
https://specifications.freedesktop.org/menu-spec/menu-spec-1.0.html#category-registry
Dies sind die gängigsten : Utility, Development, Graphics, AudioVideo
DerName ist auch gleichzeitg der Dateiname ohne Leerzeichnen
[Desktop Entry]
Type=Application
Name=MyApp
Icon=MyApp
Exec=AppRun
Categories=<Ihre Category>
Beispiel:
[Desktop Entry]
Type=Application
Name=NextclousNextcloud CSV import
Icon=nextcloudimport
Exec=AppRun
Categories=Utility
Nun eine Verzeichnissebene zurück gehen und das appimage bauen.
Die Architektur davor angeben.
ARCH=i386 (32bit)
ARCH=x86_64 (64bit)
cd ..
appimagetoolARCH=x86_64 ./appimagetool.AppImage MyApp.AppDir
Beispiel:
cd ..
ARCH=x86_64 ./appimagetool.AppImage
appimagetool nextcloudimport.AppDir
So sieht dann unsere Datei aus, mit Icon
Da dies ein Terminal python script ist was wir in ein appimage gesteckt haben probieren wir dieses jetzt im Terminal aus
