Direkt zum Hauptinhalt

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

Auswahl_258.png

Da dies ein Terminal python script ist was wir in ein appimage gesteckt haben probieren wir dieses  jetzt im Terminal aus