Python-Programm mit Doppelklick öffnen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Tschibasi
User
Beiträge: 13
Registriert: Freitag 31. August 2018, 14:19

Hallo liebe Python-Gemeinde,

ich möchte gern ein Python-Programm mit einem Doppelklick starten. Leider funktioniert das nicht bei mir.
Ich habe schon viel im Internet gesucht und ziemlich viel ausprobiert aber leider ohne Erfolg.
Was ich gemacht habe:
- Berechtigungen habe ich alle auf das Programm
- bei Dateieigenschaften habe ich so ausgewählt, dass es ausführbar ist
- die Shebangzeile habe ich ebenfalls eingefügt: #! /usr/bin/ python3
- auch probiert #!/usr/bin/env python3

Entweder kommt die Fehlermeldung:
Kindprozess konnte nicht ausgeführt werden, Datei oder Verzeichnis nicht gefunden.
oder es kommt gar nichts

Das Programm befindet sich in einem Ordner, weil dort Dateien sind, die das Programm auslesen muss.
Beim Programm ist auch eine GUI enthalten, falls das wichtig ist.

Ich hoffe ihr könnt mir weiterhelfen und vielen Dank schon mal im Voraus

Mit freundlichen Grüßen
Tschibasi
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Tschibasi: Wie greifst Du denn auf die Dateien zu? Denn das aktuelle Arbeitsverzeichnis muss ja nicht das sein in dem die Python-Programmdatei liegt. Ist es sogar eher wahrscheinlich *nicht*. Du müsstest Dir den Pfad dort hin dann beispielsweise mit dem `__file__`-Attribut von dem Modul und Funktionen aus `os.path` zusammenbasteln. Oder nicht die Datei doppelklicken sondern eine Starterdatei erstellen, je nach dem auf was für einem System das laufen soll, und dort den Arbeitspfad mit einstellen.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Tschibasi
User
Beiträge: 13
Registriert: Freitag 31. August 2018, 14:19

Hallo,

Vielen dank für die schnelle Antwort.

Das Programm läuft auf einem Raspberry Pi 3b.
Das Programm liest Textdateien aus und in der GUI werden Bilder angezeigt. Ich habe das so programmiert, das die Textdateien nur im gleichen Verzeichnis sein müssen um sie zu öffnen und auszulesen.

Ok also dein Vorschlag wäre ein kleines Programm schreiben, welches mir dann das Python-Programm öffnet und gleich ausführt??
In welcher Programmiersprache müsste, dieses kleine Programm dann sein? Weil in Python hätte ich den Vorgang wieder, oder nicht?
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Tschibasi: Kein Programm sondern was auch immer Deine Desktopumgebung da bietet. Unter KDE und GNOME beispielsweise „Desktop Entry“-Dateien. Da kann man auch das Arbeitsverzeichnis angeben.

Andererseits kannst Du wie gesagt auch den Pfad zu den Dateien im Programm über `__file__` erstellen. Das existiert in (fast) jedem Modul und enthält den Pfad + Dateinamen um zu dem Modul zu gelangen. Wenn man den Dateinamen entfernt, hat man den Pfad zu dem Modul. Und daraus kann man dann ja die Pfade zu allem ”berechnen” was man relativ zu dem Modul ansprechen möchte.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Tschibasi
User
Beiträge: 13
Registriert: Freitag 31. August 2018, 14:19

Das mit den Pfaden ist sogar keine schlechte Idee. Teilweise habe ich das sogar schon im Programm mit den ich meine Bilder öffne.
Die GUI habe ich ebenfalls in Python programmiert.
Wenn ich das mit den Pfaden noch ändere kann ich mein Programm auf den Desktop von meinem Pi ziehen. Ok, klingt logisch und ist gar nicht so verkehrt.
Nur stellt sich mir immer noch die Frage, wie das mit dem öffnen gehen soll?
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Tschibasi: Wie was mit dem öffnen gehen soll? Es wird doch schon gestartet und findet nur die Dateien nicht, sehr wahrscheinlich weil das Arbeitsverzeichnis nicht das ist was Du vermutest, also nicht das Verzeichnis in dem die Datei liegt, auf die Du klickst.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Tschibasi
User
Beiträge: 13
Registriert: Freitag 31. August 2018, 14:19

Ja das öffnen des Programms funktioniert schon.
Ich möchte aber, dass ich auf die Programm-Datei einen Doppelklick mache und es sofort ausgeführt wird. Wie wenn man in Windows eine .exe Datei ausführen will.
Dieses Verhalten möchte ich erreichen.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Tschibasi: Okay, dann verstehe ich das Problem nicht wirklich beziehungsweise ist das nicht genug Information. *Wo* klickst Du denn drauf? In welchem Programm? Und was passiert dann wenn Du das machst?
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Tschibasi
User
Beiträge: 13
Registriert: Freitag 31. August 2018, 14:19

Ok. Alles von vorne.
Ich habe ein Programm geschrieben. Dieses Programm besteht aus einer Datei.
Dieses Programm möchte ich jetzt nur mit einem Doppelklick ausführen.
Wenn ich jetzt diese Datei öffne, komme ich ja nur zum Programmcode und muss dann F5 zum ausführen des Programms drücken.
Diesen Vorgang möchte ich gerne überspringen, da ich beim Einsatzort weder Maus oder Tastatur dabei habe. Es läuft über einen Touchscreen und dabei möchte ich solche unnötigen Vorgänge einsparen. Am besten wäre noch, wenn das Programm schon beim Hochfahren vom Pi ausgeführt werden könnte.
Das heißt: Pi fährt hoch->Programm wird während des bootens ausgeführt->GUI erscheint sofort am Touchscreen
So wäre die Wunschvorstellung. ;)
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Tschibasi: Da hast Du jetzt immer noch nicht beantwortet in welchem Programm das passiert. Denn das ist ja dafür verantwortlich was bei einem Doppelklick „auf die Datei“ passiert. Und ob Doppelklick jetzt für Dich das gleiche wie „öffnen“ ist, ist auch nicht klar. Wobei „öffnen“ anscheinend IDLE meint‽ Das ist ebenfalls nicht allgemein anzunehmen. Das muss ja beispielsweise gar nicht installiert sein.

Wirklich während des Bootens wird etwas problematisch weil für ein GUI-Programm ja X laufen muss, und der Benutzer müsste normalerweise erst angemeldet werden. Bei einigen Anmeldeverwaltungen kann man aber auch Einstellen das ein vorgegebener Benutzer automatisch angemeldet wird. Und bei den meisten Desktopumgebungen kann man auch sagen ob/welche Programm beim Anmelden automatisch mitgestartet werden sollen. Da fehlen aber auch immer noch die ganzen Informationen was Du da denn letztendlich am laufen hast.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Tschibasi
User
Beiträge: 13
Registriert: Freitag 31. August 2018, 14:19

Ganz normal auf dem Desktop. Ich habe als Betriebssystem das neueste Raspbian installiert.
Ja genau mit öffnen meinte ich IDLE und das möchte ich umgehen.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn die Python-Datei ausführbar ist und die passende Shebang-Zeile hat, sollte das auch klappen.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du musst dein Skript eben in den Autostart des Desktops einbinden. Dazu gibt es haufenweise Anleitungen. NICHT in den Autostart des Systems!!!!!!!!!!! Da läuft die GUI noch nicht.
Tschibasi
User
Beiträge: 13
Registriert: Freitag 31. August 2018, 14:19

@_deets_: Danke für den Hinweis mit dem Desktop. Ich habs glaub ich immer in den Autostart vom System probiert.

@Sirius3: Ich hab die Shebangzeile eingefügt aber es kommt immer noch die Fehlermeldung: Kindprozess kann nicht ausgeführt werden. Datei und Verzeichnis nicht gefunden.
An was liegt das dann das nicht funktioniert. Muss ich bei der Shebangzeile auch noch das mit UTF-8 mit einfügen?? Oder muss diese zweite Zeile anders heißen?

Danke für die schnellen Antworten
Benutzeravatar
Perlchamp
User
Beiträge: 172
Registriert: Samstag 15. April 2017, 17:58

@alle:
ich lese hier nur mit, aber ich frage mich die ganze Zeit:
1. warum stellt er sein Skript nicht mal hier rein bzw. das, was notwendig ist.
2. warum schreibt er nicht einmal, in welchem Pfad Python installiert und wo seine Dateien liegen und und und ...
wer lesen kann ist klar im Vorteil ;-)
es gibt keine Probleme, sondern nur Lösungen !
Bildung ist die Freude auf mich selbst !
Antworten