ubuntuusers.de

Python in GIMP unter Mate 20.04

Status: Gelöst | Ubuntu-Version: Ubuntu MATE 20.04 (Focal Fossa)
Antworten |

HaJoEg

Avatar von HaJoEg

Anmeldungsdatum:
8. Juli 2013

Beiträge: Zähle...

Wohnort: Rwentale

Ich hatte angefangen ein python plug in zu schreiben für GIMP. Das war noch in der GIMP version 2.8 und Mate 18.04. GIMP arbeitet nach wie vor mit python2, das wurde auch noch in Mate 18.04 unterstützt.

Nun habe ich ein Problem, nach Neuinstallation von Mate 20.04 und GIMP 2.10 gibt es keine python2 Unterstützung mehr. In GIMP ist der Script fu Interpreter weiterhin vorhanden und wie ich die Dokumetation von GIMP verstehe sollte auch der Python Interpreter(Gimpfu) vorhanden sein, ist es aber nicht.

Ich vermute, das liegt daran, dass Mate 20.04 kein python2 mehr unterstützt. Das kann man sich zwar runterladen (habe ich auch gemacht), hilft aber nicht, denn es fehlt auch an anderen Paketen. Zum Beispiel dies:

gimp-python_2.10.8-2_ (aus 19.10, da steckt wohl gimpfu drin)

welches wiederum

python-gtk2(>=2.8.0) (existiert nicht in der aktuellen 20.04 Paketquelle)

erfordert.

Als eigentliche Ursache erscheint mir, dass GIMP immer noch mit dem veralteten python2 arbeitet. Ich habe mir den GIMP Entwicklungsplan angesehn, da steht nichts über python drin. Ich brauche Rat, wie ich mein plug in denn nun doch noch zu Ende bringen kann.

haveaproblem

Anmeldungsdatum:
2. Januar 2015

Beiträge: 1163

Nabend, ich würde es einfach mal mit dem Gimp Snap Build probieren

sudo snap install gimp

. Das ist auf noch auf Ubuntu 18.04 basis gebaut und sollte Python 2 beinhalten. Bedenke bitte, dass bei Snaps der Pfad leicht anders ist. Was vorher $HOME/.config/usw. war ist bei Snaps: $HOME/snap/gimp/current/.local/usw.

HaJoEg

(Themenstarter)
Avatar von HaJoEg

Anmeldungsdatum:
8. Juli 2013

Beiträge: Zähle...

Wohnort: Rwentale

Ja danke für die Antwort haveaproblem. Ich habe bis jetzt um snap einen großen Bogen gemacht, einfach weil mir der Sinn nicht klar ist. Aber wenn Du es sagst, dann sollte ich das mal versuchen. Kann ich das parallel zu dem bereits installierten machen?

Ich werde ein paar Tage brauchen um mich da reinzuarbeiten, melde mich dann aber mit Resultaten.

HaJoEg

(Themenstarter)
Avatar von HaJoEg

Anmeldungsdatum:
8. Juli 2013

Beiträge: Zähle...

Wohnort: Rwentale

Ja hallo haveaproblem,

es hat funktioniert, GIMP läuft mit snap und python2 Unterstützung. Und es ist GIMP 2.10. So ganz klar ist mir das nicht, wenn die Pakete wegen python2 und GTK2 existieren, warum sind sie dann nicht im regulären Repositorium zugänglich.

Aber das eigentliche Problem scheint mir GIMP selbst zu sein, warum stellen die nicht auf python3 um. Ich werde mich dort mal erkundigen.

haveaproblem

Anmeldungsdatum:
2. Januar 2015

Beiträge: 1163

HaJoEg schrieb:

es hat funktioniert, GIMP läuft mit snap und python2 Unterstützung. Und es ist GIMP 2.10. So ganz klar ist mir das nicht, wenn die Pakete wegen python2 und GTK2 existieren, warum sind sie dann nicht im regulären Repositorium zugänglich.

Python 2 ist ja schon länger nicht mehr unterstützt. Und in 20.04 sind jetzt endgültig einige Pakete rausgeflogen, die noch in den 18.04 Repos waren . Das Snap Paket von GIMP basiert allerdings auf Ubuntu 18.04 und hat deshalb auch noch Pakete aus den 18.04 Repo. Snaps laufen dabei in einer Sandbox, dass heißt kein anderes Programm kann die Python2 libs von der GIMP Snap benutzen, noch können von außen Sicherheitslücken der veralteten libs ausgenutzt werden.

Aber das eigentliche Problem scheint mir GIMP selbst zu sein, warum stellen die nicht auf python3 um. Ich werde mich dort mal erkundigen.

Wenn ich mich richtig erinnere waren das wohl irgendwie ~5 Kern Entwickler, die wollen jetzt GIMP auf GTK3 Umstellen, sonstige Vorhaben findest du in der GIMP-Raodmap, Python 3 steht allerdings nirgendwo drin, ob die dazu überhaupt die nötige Manpower haben ist auch noch so eine Sache.

HaJoEg

(Themenstarter)
Avatar von HaJoEg

Anmeldungsdatum:
8. Juli 2013

Beiträge: 271

Wohnort: Rwentale

In die roadmap hatte ich schon reingeguckt, aber da ist nichts was GTK oder python betrifft. Was ich nicht verstehe ist: GIMP steckt doch voller python scripte, laufen die alle unter python2? Wie kann das dann noch unter 20.04 funktionieren?

Ich habe auch mein GIMP plug-in (noch in Arbeit) eingeladen in das snap-Gimp, also prinzipiell geht es, aber es gibt sofort Prtobleme wegen dieser Sandbox, da werden Dateien in /home/user nicht gefunden. Da muß ich mich jetzt reinarbeiten wie man das macht. Also die snap Lösung geht, aber sehr elegant ist es nicht.

haveaproblem

Anmeldungsdatum:
2. Januar 2015

Beiträge: 1163

Du solltest eigentlich auf $HOME zugreifen könne, aus der Snap. Zeige mal bitte:

snap connections gimp

HaJoEg

(Themenstarter)
Avatar von HaJoEg

Anmeldungsdatum:
8. Juli 2013

Beiträge: 271

Wohnort: Rwentale

Du solltest eigentlich auf $HOME zugreifen könne, aus der Snap. Zeige mal bitte:

xy@xy-HP:~$ snap connections gimp
Benutzeroberfläche        Plug                  Slot                              Notizen
content[gnome-3-28-1804]  gimp:gnome-3-28-1804  gnome-3-28-1804:gnome-3-28-1804   -
content[gtk-2-engines]    gimp:gtk-2-engines    gtk2-common-themes:gtk-2-engines  -
content[gtk-3-themes]     gimp:gtk-3-themes     gtk-common-themes:gtk-3-themes    -
content[icon-themes]      gimp:icon-themes      gtk-common-themes:icon-themes     -
content[sound-themes]     gimp:sound-themes     gtk-common-themes:sound-themes    -
cups-control              gimp:cups-control     -                                 -
dbus                      -                     gimp:dbus-gimp                    -
desktop                   gimp:desktop          :desktop                          -
desktop-legacy            gimp:desktop-legacy   :desktop-legacy                   -
gsettings                 gimp:gsettings        :gsettings                        -
home                      gimp:home             :home                             -
network                   gimp:network          :network                          -
opengl                    gimp:opengl           :opengl                           -
removable-media           gimp:removable-media  -                                 -
unity7                    gimp:unity7           :unity7                           -
wayland                   gimp:wayland          :wayland                          -
x11                       gimp:x11              :x11                              -
xy@xy-HP:~$

Ich kann schon aus snap_GIMP heraus auf "home" zugreifen, aber mein script kann das nicht. Dort wird mit einem "subprocess.call" auf Dateioperationen zugegriffen und "~" wird auch benutzt. Ich bin ein Anfänger mit Python, will es ja gerade lernen, das ist der Zweck der Übung. Es wird einem nicht leicht gemacht durch diese Konfusion mit python2/3, GTK2/3, Mate18/20, GIMP8/10....

haveaproblem

Anmeldungsdatum:
2. Januar 2015

Beiträge: 1163

Liegt daran, dass der $HOME Path in Snaps $HOME/snap/snapname/build ist. Ich habe jetzt mal ein bisschen herumexperimentiert und einen kleinen Workaround gefunden. Der ist zwar alles andere als elegant und meine nicht vorhandenen Python Fähigkeiten lassen auch zu Wünschen Übrig, aber Bitteschön:

1
2
3
4
5
import os
absFilePath = os.getenv("HOME") 
fileDir = os.path.dirname(absFilePath)
fileDir2 = os.path.dirname(fileDir)
homedir = os.path.dirname(fileDir2)

Damit hast du dann schon mal das Home Verzeichnis unter der Variable homedir. Credit zu dieser Anleitung geht dann erst mal an diese Seite. Mit

1
2
3
fname = homedir+"/Bilder/Bildname.png"

img = pdb.gimp_file_load(fname, fname, run_mode=RUN_NONINTERACTIVE)

Kann ich dann sogar das entsprechende Bild laden. Wenn du dein Script Cross Plattform halten willst, kannst du es ja erkennen lassen ob es in einer Snap läuft und den Code dementsprechend ausführen.

EDIT: Mir ist gerade spontan noch was einfacheres eingefallen...

1
2
import os
homedir = "/home/"+os.getenv("USER")

Das funktioniert sowohl mit als auch ohne Snap unter Linux.

HaJoEg

(Themenstarter)
Avatar von HaJoEg

Anmeldungsdatum:
8. Juli 2013

Beiträge: 271

Wohnort: Rwentale

Also abschließend noch einmal: Ich habe mich im GIMP Forum umgesehen, dort ist es auch Thema:

//www.gimp-forum.net/Thread-Python-2-support?highlight=python3

Da steht auch dies:

AFAIK Python3 support is in plan for Gimp v3. But it looks quite different from the Python2 bindings.

Also haben wir offensichtlich auf GIMP 3 zu warten bevor es wieder richtig läuft. Im GIMP Forum ist UBUNTU der Böse, der die Unterstützung weggezogen hat. Ein bißchen brutal finde ich das allerdings auch. Lohnt es sich überhaupt noch ein plug-in zu schreiben, wenn es doch kaum jemand anwenden kann?

P.S. Ich hatte obigen Text schon geschrieben und empfange jetzt noch Deine Antwort. Ja natürlich, snaps hat einen anderen Homepfad, aber gut das Du da ein Workaround gefunden hast. Damit muß ich mich erst beschäftigen.

Crossplatform wollte ich eigentlich nicht, ich bin seit 10 Jahren raus aus Windows und habe auch gar keine Lust damit nochmal meine Zeit zu verschwenden.

haveaproblem

Anmeldungsdatum:
2. Januar 2015

Beiträge: 1163

HaJoEg schrieb:

Also abschließend noch einmal: Ich habe mich im GIMP Forum umgesehen, dort ist es auch Thema:

https://www.gimp-forum.net/Thread-Python-2-support?highlight=python3

Da steht auch dies:

AFAIK Python3 support is in plan for Gimp v3. But it looks quite different from the Python2 bindings.

Also haben wir offensichtlich auf GIMP 3 zu warten bevor es wieder richtig läuft. Im GIMP Forum ist UBUNTU der Böse, der die Unterstützung weggezogen hat.

Tja, einen bösen gibt es da imho nicht, python hat die Unterstützung eingestellt, das fliegt bei Ubuntu langsam raus und bei GIMP fehlen die Ressourcen für einen Zeitnahen wechsel.

Ein bißchen brutal finde ich das allerdings auch. Lohnt es sich überhaupt noch ein plug-in zu schreiben, wenn es doch kaum jemand anwenden kann?

Also wenn das plug-in nur eine Übung für dich ist, dann ist es wohl egal wenn andere außer dir nicht Nutzen können 😛

Ansonsten steht ja in deinem verlinkten Beitrag das auch in Arch Python2 noch weiterhin im AUR ist, auch die Flatpak soll wohl funktionieren. Und ich finde es ist jetzt wirklich nicht die Welt

 "/home/"+os.getenv("USER")

anstelle von

os.getenv("HOME") 

zu schreiben. Zumal ersteres theoretisch auch in Flatpaks funktionieren müsste (ungetestet Nagelt mich nicht drauf fest 😉)

P.S. Ich hatte obigen Text schon geschrieben und empfange jetzt noch Deine Antwort. Ja natürlich, snaps hat einen anderen Homepfad, aber gut das Du da ein Workaround gefunden hast. Damit muß ich mich erst beschäftigen.

Crossplatform wollte ich eigentlich nicht, ich bin seit 10 Jahren raus aus Windows und habe auch gar keine Lust damit nochmal meine Zeit zu verschwenden.

Meinte damit auch mehr "Crossplatform" in bezug auf verschiedene Linux distries. Es kann hier aber auch durch aus sein, dass die Umgebungsvariablen unter anderen Distributionionen nicht so vergeben sind wie unter Ubuntu. Allerdings ist das jetzt auch keine Schwarze Magie sowas als User zu setzen, vorrausgesetzt du Dokumentierst das ordentlich unter z.B. einer "Requirements"-Sektion wenn du dein plug-in veröffentlichen willst.

HaJoEg

(Themenstarter)
Avatar von HaJoEg

Anmeldungsdatum:
8. Juli 2013

Beiträge: 271

Wohnort: Rwentale

Hallo haveaproblem, lauscht Du noch auf diesem Kanal? Ich habe mein Skript nun eingeladen und ein paar Änderungen gemacht wegen Dateioperationen (rausgeworfen, das wäre auch aus anderen Gründen nicht gegangen). Es bleibt ein Problem, das Skript kann wohl Bilddateien einladen, soweit sie aus dem "normalen" home-Verzeichnisbaum kommen. Bei mir geht es aber über das versteckte Verzeichnis ".local" und da kriege ich eine Meldung:

RuntimeError: Datei »/home/xy/.local/share/marble/maps/earth/openstreetmap/19/307812/260064.png« konnte nicht zum Lesen geöffnet werden: Permission denied

Das mit dem versteckten Pfad kann ich nicht ändern, das script soll marble Kacheln in GIMP laden und marble hat diesen Pfad so festgelegt. Wenn ich das richtig verstehe dann verhindert der Sandkasten ganz bewußt den Zugriff auf versteckte Dateien um keine Konfigurationsdatein zu gefährden. Sehe ich das richtig? Und wie komme ich daran gefahrlos vorbei?

Meinte damit auch mehr "Crossplatform" in bezug auf verschiedene Linux distries. Es kann hier aber auch durch aus sein, dass die Umgebungsvariablen unter anderen Distributionionen nicht so vergeben sind wie unter Ubuntu. Allerdings ist das jetzt auch keine Schwarze Magie sowas als User zu setzen, vorrausgesetzt du Dokumentierst das ordentlich unter z.B. einer "Requirements"-Sektion wenn du dein plug-in veröffentlichen willst.

Ja doch, ich denke schon an Veröffentlichung für unixoide, aber erste einmal muß es bei mir vorzeigbar laufen, dann kann man auch über anderes nachdenken. Ich könnte mir vorstellen, dass es eine Menge Leute aus der Kartografen Front interessiert, denn damit kann man sehr viel an persönlicher Nachbearbeitung machen und die ganzen Druck-und Exportfunktionen nutzen.

haveaproblem

Anmeldungsdatum:
2. Januar 2015

Beiträge: 1163

HaJoEg schrieb:

... Das mit dem versteckten Pfad kann ich nicht ändern, das script soll marble Kacheln in GIMP laden und marble hat diesen Pfad so festgelegt. Wenn ich das richtig verstehe dann verhindert der Sandkasten ganz bewußt den Zugriff auf versteckte Dateien um keine Konfigurationsdatein zu gefährden. Sehe ich das richtig?

Ja.

Und wie komme ich daran gefahrlos vorbei?

Der Snap Lese Zugriff auf .config geben. Aber das ist hier bei GIMP etwas schwieriger. Und zwar muss in der snapcraft.yaml der Snap ein personal-files-interface hinterlegt sein, dass ist hier bei GIMP leider nicht der Fall. Du kannst bei snapcrafters/gimp/ z.B. ein issue schreiben und versuchen dafür zu sorgen, dass .config in die Snap mit Leserechten aufgenommen wird. Ansonsten kannst du versuchen die Snap mit den Änderungen selbst zu bauen. Man kann auch mehrere Versionen einer App in den Snap Store pushen, du könntest dann also z.B. eine GIMP Snap mit deinem Script, sowie zugriff auf .config in den Snap Store hochladen. Besser wenn du diesen Weg gehen willst wäre es allerdings Marble direkt in die GIMP Snap mit einzubauen (Dann brauchst du auch keinen Zugriff auf .local mehr).

Ansonsten bleiben dir noch Flatpaks, ich weiß aber nicht, wie da der Stand mit Sandboxing ist (vielleicht haben die das ja auch gar nicht).

HaJoEg

(Themenstarter)
Avatar von HaJoEg

Anmeldungsdatum:
8. Juli 2013

Beiträge: 271

Wohnort: Rwentale

Der Snap Lese Zugriff auf .config geben. Aber das ist hier bei GIMP etwas schwieriger. Und zwar muss in der snapcraft.yaml der Snap ein personal-files-interface hinterlegt sein, dass ist hier bei GIMP leider nicht der Fall. Du kannst bei snapcrafters/gimp/ z.B. ein issue schreiben und versuchen dafür zu sorgen, dass .config in die Snap mit Leserechten aufgenommen wird. Ansonsten kannst du versuchen die Snap mit den Änderungen selbst zu bauen. Man kann auch mehrere Versionen einer App in den Snap Store pushen, du könntest dann also z.B. eine GIMP Snap mit deinem Script, sowie zugriff auf .config in den Snap Store hochladen.

Ohh.. ich wollte doch nur ein paar Kachel laden. Das sollte ein einfaches plug-in werden, wer soll das benutzen unter diesen Bedingungen. Also es bleibt mir nichts anders übrig als die Sache vorläufig auf Eis zu legen. Wer bleibt noch übrig der es so nutzen könnte? Noch ein Jahr Restdauer für Mate 18.04 und andere Derivate und die, die das Standardubuntu noch 3 Jahre weiternutzen. Alles mit abnehmender Tendenz. Da kann ich nur auf GIMP 3 warten und es dann entsprechend umbauen.

Um das für mich nochmal soweit fertigzustellen, habe ich mir jetzt ein 18.04 in VirtualBox aufgesetzt (auch nicht ganz einfach). Ich habe noch alle alten Pakete. Dann habe ich auch 3 Versionen von GIMP und da wird wohl snap dran glauben müssen.

Ich kann ja die Entwickler bei UBUNTU ganz gut verstehen, die wollen sich nicht mehr mit veralteter Software abgeben, und GIMP fehlen die Kapazitäten. Auf die snap Lösung werden noch manche GIMP Intensivnutzer ausweichen müssen, denn es fehlt an manchem Python Skript. Nur für mich ist das keine Lösung.

Besser wenn du diesen Weg gehen willst wäre es allerdings Marble direkt in die GIMP Snap mit einzubauen (Dann brauchst du auch keinen Zugriff auf .local mehr).

Marble Kacheln sind, ich weiß nicht wieviel TB, die muß jeder selbst mitbringen, das kann man nicht in ein plug-in packen

haveaproblem

Anmeldungsdatum:
2. Januar 2015

Beiträge: 1163

HaJoEg schrieb:

Also es bleibt mir nichts anders übrig als die Sache vorläufig auf Eis zu legen.

Flatpak!, die nutzen keine Sandbox.

Wer bleibt noch übrig der es so nutzen könnte?Noch ein Jahr Restdauer für Mate 18.04 und andere Derivate und die, die das Standardubuntu noch 3 Jahre weiternutzen. Alles mit abnehmender Tendenz.

Außerdem Arch und Flatpak Nutzer.

Da kann ich nur auf GIMP 3 warten und es dann entsprechend umbauen.

Nun ja, wie du dein Plug in schreibst ist deine Entscheidung. Du könntest es natürlich auch ganz "Hacky" mit einem Bash Script außerhalb der Snap machen, welches die Dateien auf Aufruf temporär kopiert und in einen beschreibbaren Ordner legt und diese dann Anschließend wieder löscht. Das wäre aber ziemlich viel Bastelarbeit...

Antworten |