Ich habe folgendes Problem: Unter Verwendung eines RaspPi 3B mit Raspbian Jessie (Version 4.4.26-v7 +) möchte ich, dass die GUI eines selbstgeschriebenen Python-Skripts beim Start ausgeführt wird.
Ich weiß, dass diese Frage sowohl auf dieser Website als auch auf anderen gestellt wurde, aber da sich Raspbian ständig ändert und keine der zuvor vorgeschlagenen Lösungen für mich funktioniert hat (siehe unten), möchte ich sie erneut stellen.
Nach meinem Verständnis muss ich XServer laden und mein Skript anschließend ausführen. Dies sollte passieren, anstatt den gesamten Desktop zu laden.
Eine Möglichkeit, dies zu erreichen, soll die LXDE-Autostart-Datei sein (wie in dieser Antwort beschrieben ). Ich habe sowohl die Datei /etc/xdg/lxsession/LXDE-pi/autostart
als auch die Datei bearbeitet /etc/xdg/lxsession/LXDE/autostart
(die erstere enthielt ursprünglich vier statt drei Zeilen, wie in dem Beitrag angegeben) - die Zeilen @sudo python /full/path/to/file.py
und @openbox
wurden hinzugefügt , aber mein Pi bootet immer noch auf dem Desktop und führt das Skript überhaupt nicht automatisch aus. Anmerkung: Ich habe nur die Skriptzeile und die Skriptzeile zusammen mit der Openbox-Zeile für eine der Dateien und für beide Dateien zusammen ausprobiert.
Eine andere Strategie betrifft die Datei rc.local (wie in der offiziellen Dokumentation vorgeschlagen ). Allerdings hat nur das Hinzufügen python /full/path/to/file.py &
nicht funktioniert (da noch meine GUI fehlte) und das weitere Hinzufügen startx
hat nicht geholfen, da ich das startx anscheinend nicht mit dem Python-Skript verknüpfen konnte und das erstere daher sofort nach dem Start geschlossen wurde.
Einige schlagen vor , dass (zusätzlich) .xinitrc verwendet werden sollte. Dies funktionierte jedoch auch nicht:
su -c python /full/path/to/file.py pi
Und zu guter Letzt sollte es in gewisser Weise mit init.d machbar sein - Details dazu habe ich aber noch nicht gefunden.
Ich würde mich über jeden Hinweis in die richtige Richtung sehr freuen. Wo ist mein Fehler? Wie soll meine Zeile in rc.local oder .xinitrc aussehen? Oder hat sich im Zusammenhang mit der Umstellung auf Pixel einiges getan, und ich sollte etwas anderes ausprobieren?
Einige zusätzliche Informationen: Das Skript benötigt Sudo-Rechte. Es ist in Python 2.7 geschrieben, die GUI verwendet Tkinter. Die Benutzeroberfläche füllt den Bildschirm vollständig aus, sodass Hintergründe keine Rolle spielen. Das Skript soll für immer ausgeführt werden (oder bis es durch Benutzereingaben über die GUI gestoppt wird) und verwendet Systemdienste wie WLAN und Ethernet.
Weitere Informationen: Alles geschieht vor Ort.
Erläuterung: Inzwischen habe ich mehr als 8 Stunden im Internet gesucht, Tutorials von verschiedenen Ausgangspunkten aus ausprobiert oder zusammengemischt. Ich bin zu dem Schluss gekommen, dass entweder mein Skript (das beim Start in Pixel einwandfrei funktioniert) nicht funktioniert, wenn es in einer Nicht-Desktop-Umgebung ausgeführt wird (was ich bezweifle), oder dass ein neues Tutorial erforderlich ist, da der Oktober 2016 auf Raspbian umgestellt wird Ältere Tutorials wurden überholt. Darüber hinaus besteht die Herausforderung nicht darin, das Skript oder Xserver (oder etwas Ähnliches) unabhängig voneinander zu starten, sondern beides zu tun, damit das Skript die von Xserver erstellte Anzeige verwendet.