Es kann kein funktionierender Desktop-Launcher für ein Python-Programm erstellt werden

Es kann kein funktionierender Desktop-Launcher für ein Python-Programm erstellt werden

Ich erstelle ein völlig neues Debian-Paket cpconverteraus A simple utility to change the code page of plain text based fileseiner in Google Code veröffentlichten Quelle.

Alles lief gut. Allerdings bekomme ich keinen funktionierenden Launchpad-Launcher hin.

Die Python-Datei cpConverter.pywird im Ordner gespeichert /usr/share/cpconverter/cpconverter/.

Ich habe einen Ordner Shell Scriptmit dem Namen „ cpconverterin“ /usr/bin/, der lautet:

#!/bin/sh

python /usr/share/cpconverter/cpconverter/cpConverter.py

Der Desktop Launcher cpconverter.desktopist einfach

[Desktop Entry]
Version=0.5
Encoding=UTF-8
Name=Code Page Converter
Name[en_US]=Code Page Converter
Comment=A simple utility to change the code page of plain text based files
Type=Application
Exec=/usr/bin/cpconverter
Icon=cpconverter
Terminal=false
StartupNotify=true
Categories=Utility;

Der Start schlägt jedoch fehl.

Ich habe überprüft, ob die Installation cpConverter.pyordnungsgemäß funktioniert, indem ich sie gestartet habe:

$ python /usr/share/cpconverter/cpconverter/cpConverter.py

Anschließend startet das Programm gelegentlich. Nach dem Anklicken des Launchers funktioniert es jedoch oft nicht mehr.

Allerdings funktioniert die Datei cpConverter.pyin der Gebäudestruktur des Pakets immer zB

$ python cpconverter-0.5/debian/cpconverter/usr/share/cpconverter/cpconverter/cpConverter.py

Ich habe versucht, dieselbe Befehlszeile in einem Terminal einzugeben und habe dann eine Reihe (zumindest für mich) unbekannter Fehlermeldungen erhalten:

$ cpconverter
/usr/bin/cpconverter: 3: /usr/bin/cpconverter: pyhton: not found
$ 
$ pyhton /usr/share/cpconverter/cpconverter/cpConverter.py
No command 'pyhton' found, did you mean:
 Command 'python' from package 'python-minimal' (main)
pyhton: command not found
$

Dann habe ich versucht, ein funktionierendes Beispiel für ein Paket zu erstellen convertall, das für seine Shell ScriptVerwendung Folgendes bietet:

#!/bin/sh

exec /usr/bin/python3 /usr/share/convertall/convertall.py "$@"

Vom Terminal aus würde ich es erfolgreich mit folgendem starten:

$ python3 /usr/share/convertall/convertall.py "$@"

Dann habe ich es Shell Scriptwie folgt geändert:

exec /usr/bin/python2 /usr/share/cpconverter/cpConverter.py "$@"

Das Ergebnis ist immer noch, dass der Desktop Launcher nicht funktioniert ... eine Sanduhr und nichts. Eine dieser 3 Befehlszeilen startet das Programm jedoch immer:

$ python2 /usr/share/cpconverter/cpconverter/cpConverter.py "$@"
$ /usr/bin/cpconverter
$ cpconverter

Die Zugriffsrechte hierfür cpconverter.desktopsind Standard:

$ ls -l /usr/share/applications/clipgrab.desktop
-rw-r--r-- 1 root root 626 Dec  9  2014 /usr/share/applications/clipgrab.desktop

Warum kann der Desktop Launcher das Programm dann nicht starten? Was ist mit meinem Desktop Launcher los? [Siehe oben]

Antwort1

Ich bin nicht sicher, ob das wirklich notwendig ist, aber als ich ein Bash-Skript erstellt habe, habe ich das Skript mit diesem Befehl gestartet: „bash $$$$$$$.sh“. Der einzige Grund, warum ich das erwähne, ist, dass die Erweiterung .py nicht im Skriptnamen in Ihrem Desktop-Launcher vorkommt. Vielleicht ist das nichts, aber einen Blick und einen Versuch wert. Craig

Antwort2

Wie ich bereits im Kommentar sagte, schlug das Ausführen Dash Scriptaus dem /usr/bin/Verzeichnis, genau wie beim Desktop-Launcher, mit diesem Python-Fehler fehl:

/usr/bin$ cpconverter
Traceback (most recent call last):
  File "/usr/share/cpconverter/cpconverter/cpConverter.py", line 342, in <module>
    app = cpConverter()
  File "/usr/share/cpconverter/cpconverter/cpConverter.py", line 74, in __init__
    builder.add_from_file("./gui/gui.xml")
glib.GError: Failed to open file './gui/gui.xml': No such file or directory
$ 

Beim Ausführen cpconverteran der Eingabeaufforderung an einer anderen Stelle im Home-Ordner oder in /usr/share/cpconverter/cpconverter(wo sich die Datei coCPnverter.py befindet) wäre dies erfolgreich.

Dann war klar, dass der Täter ./in der cpConverter.pyAkte war.

Ich habe einfach einen Patch erstellt, allow-launch-from-usr-bin-script.patchum den absoluten Pfad (nach dem Verpacken) anstelle des relativen Pfads zu platzieren:

builder.add_from_file("/usr/share/cpconverter/cpconverter/gui/gui.xml")

Das hat das Problem erklärt und gelöst.

verwandte Informationen