Autostart eines Python Programm auf dem Raspberry Pi
Dieser kurze Beitrag soll dir zeigen, wie du dein in Python geschriebenes Programm beim Start des Raspberry Pi automatisch im Desktop Modus starten und ausführen lässt.
Bekanntlich führen viele Wege nach Rom, sodass es bestimmt auch mehrere Möglichkeiten für den Autostart eines Programmes bzw. Services unter Raspbian auf dem Raspberry Pi gibt. Meinen Weg zeige ich dir in den folgenden Schritten.
Hinweis: In meinem neuen Beitrag Automatisches Starten eines Python-Skripts auf dem Raspberry Pi mit Systemd stelle ich eine Methode vor, die sowohl auf Systemen mit als auch ohne Desktop-Umgebung funktioniert und mit den aktuellen Versionen des Raspberry Pi OS, einschließlich Bullseye und Bookworm, kompatibel ist.
Solltest du deinen Raspberry Pi nicht im Desktop-Modus betreiben, bzw. möchtest darauf verzichten, dann schaue dir mal meinen Beitrag “Python Script auf dem Raspberry Pi automatisch starten” an.
Anlegen der Autostart – Datei
Als Erstes öffnest du dein Terminal-Programm, oder verbindest dich per SSH mit deinem Raspberry Pi. Das notwendige Verzeichnis für die Datei findest du im Pfad /home/pi/.config/autostart. Damit die Datei auch dort abgespeichert wird, empfiehlt sich ein Wechsel dorthin mit folgendem Befehl.
1 |
cd /home/pi/.config/autostart |
Aktualisierung: In den neueren Versionen von Raspbian OS befindet sich der notwendige Autostart-Ordner in einem anderen Verzeichnis. Der Pfad lautet nun /etc/xdg/autostart. Datei auch dort abgespeichert wird, empfiehlt sich ein Wechsel dorthin mit folgendem Befehl.
1 |
cd /etc/xdg/autostart |
In dem Verzeichnis öffnest du eine Textdatei mit einem Texteditor, ich verwende hierzu den im Raspbian OS vorhandenen nano Editor.
1 |
sudo nano pythonprogramm.desktop |
Statt der von mir verwendeten Bezeichnung pythonprogramm kannst du eine beliebige Bezeichnung, z.B. den Namen deines Programmes verwenden.
Inhalt der Autostart – Datei
Jetzt fügst du folgenden Inhalt in die Datei ein. Hierzu möchte ich gleich anmerken, ich schreibe mir auch gerne den Aufruf des Programmes in der Pythonentwicklungsumgebung mit in diese Datei. Jedoch wird diese auskommentiert durch das # Zeichen und wird deshalb nicht ausgeführt.
Aktualisierung: Ich habe statt der Python IDLE nun Thonny eingefügt, wenn du weiterhin IDLE verwenden möchtest, musst du diese erst installieren.
1 2 3 4 5 6 7 8 9 |
[Desktop Entry] Encoding=UTF-8 Type=Application Name=pythonprogramm #Exec=sudo thonny /var/www/html/pythonprogramm.py Exec=sudo python3 /var/www/html/pythonprogramm.py StartupNotify=false Terminal=yes Hidden=false |
Auch hier gilt, statt der Bezeichnung pythonprogramm verwendest du deinen Programmnamen. Zudem musst du den Pfad zu deinem Programm anpassen. Die Datei speicherst du mit der Tastenkombination Strg+o und beendest den Texteditor mit Strg+x.
Laufende Prozesse anzeigen
Nach einem Neustart des Raspberry Pi läuft nun dein Programm auf dem Raspberry Pi als eigenständiger Prozess. Dies kannst du über den folgenden Terminalbefehl überprüfen.
1 |
ps -ax |
Sollte dein Programm nicht unter den Prozessen sein, musst du eventuell noch die entsprechenden Rechte setzen.
1 |
sudo chmod 0777 pythonprogramm.py |
Auch hier steht pythonprogramm wieder als Synonym für deine Programmbezeichnung.
Letzte Anmerkung
Bedenke bitte, jegliche Änderung am Programm-Code wird erst nach einem Neustart wirksam.
Hallo Herr Raab,
danke für die schnelle Antwort! Das skript „läuft“, d.h., wenn ich „sudo python3 camera_return.py“ in die Konsole eintippe, fotografiert der raspi,. So, wie im Kommentar beschrieben. Alles andere habe ich entsprechend Ihrem Beitrag „Python Script auf dem Raspberry Pi automatisch starten“ gemacht, und im skript bzw. im Eintrag in „rc lokal“ gibt es natürlich auch das Leerzeichen, nur eben im Kommentar nicht. Aber es funktioniert nicht, d.h., das skript wird beim Start des Raspi nicht initialisiert. Was also ist falsch? MfG Karl-Heinz
Hallo Karl-Heinz,
wie sieht es aus, wenn das Skript wie hier im Beitrag beschrieben über den Autostart gestartet wird? Hast du dir schon nach dem Start die laufenden Prozesse anzeigen lassen?
Viele Grüße
Wolfgang
Ich habe für den Raspberry Pi ein „skript“ erstellt. Es heißt „camera_return.py“. Das „skript“ erfüllt folgende „Aufgaben“
1 Wenn ich in die Konsole „sudo python3 camera_return.py“ eintippe und „Return“ (oder „Enter“) drücke, macht der Raspberry ein Foto, immer wieder, bis ich „Strg+C“ drücke, was den Prozess beendet. Nichts Besonderes.
2 Um wieder zu beginnen, muss ich allerdings immer wieder den oben genannten „Befehl“, also „sudo python3 camera_return.py“ in die Konsole eintippen.
3 Damit das „skript“ bereits beim Start des Raspberry initialisiert wird, habe ich die „rc.local-Datei“ geändert, und zwar:
„sudo nano /etc/rc.local“
„sudo python3/home/klaus/camera_return.py“ („klaus“ ist die Alternative zum üblichen „pi“)
und zwar habe ich diesen Zusatz vor “exit 0” eingefügt
4 Dann mit „Strg+O“ und „Return“ gespeichert, und mit „Strg+X“ abgeschlossen, dann „sudo reboot“.
Aber: Leider funktioniert es nicht; was ist falsch? Bitte: Ich bin Anfänger, also bitte keine großen Erklärungen, die ich als Anfänger eh nicht verstehe. Also: Was muss ich ändern/ergänzen, dass „es“ läuft? Vielen Dank!!!
Hallo,
vielen Dank für den Kommentar. Ohne direkten Zugriff auf das System ist es immer schwierig eine Lösung zu präsentieren. Den Eintrag in der rc.local beschreibe ich in meinem Beitrag Python Script auf dem Raspberry Pi automatisch starten. Vielleicht würde ja der Ansatz wie in diesem Beitrag beschrieben eine Lösung bieten. Interessant wäre, zu wissen, ob das Skript überhaupt mit dem eingetragenen Aufruf gestartet wird. Im Kommentar fehlt unter anderem das Leerzeichen zwischen python3 und /home. Deshalb würde ich empfehlen, erst mal die laufenden Prozesse mit ps -ax anzeigen zu lassen.
Viele Grüße
Wolfgang
Endlich!!
Ich habe ein fenster mit python3 unter der verwendung von tkinter erstellt und dieses sollte direkt beim start ausgeführt werden.
Ich habe viele Lösungen versucht hat leider nicht geklappt bis ich das hier verwendet habe. TOP!!!!
Kleine anmerkung eventuell hilfreich für andere: anstatt Exec=sudo…… habe ich Exec=python3 /home/….. verwendet.
Vielen dank für die hilfe echt Top!!
Hallo Domey,
vielen lieben Dank für Deine positive Rückmeldung und dem Tipp mit “Exec=python3/…”.
Viele Grüße
Wolfgang
Hallo Wolfgang,
ich will eine Kamera damit anstarten jedoch funktioniert es nicht, da diese nicht am Start ausgeführt wird. Ich hatte keinen Autostart Ordner deswegen hab ich einen erstellt. Des Weiteren hab ich nicht ganz verstanden mit welchem Befehl ich anfangen muss. Stimmt cd /home/pi/.config/autostart ?
Hallo Sebastian,
der Befehl cd /home/pi/.config/autostart gehört nicht in deine Autostartdatei. Mit der cd Anweisung kannst du direkt in den ausgewählten Ordner wechseln. Zum Starten der Kamera benötigst du die entsprechende Kamerasoftware.
Viele Grüße
Wolfgang
Hallo ich habe auf meinem pi ein Programm zur geschwindigkeitsmessung geschrieben und möchte nun das Programm als Autostart Programm ausführen lassen.
Programm liegt hier: /home/pi/Test.py
Was genau muss ich jetzt ins Terminal eingeben damit das Programm beim hochfahren automatisch öffnet.
Und muss im Python Programm selbst auch noch ein Befehl für den autostart rein?
Danke vorab für die Hilfe.
Hallo Daniel,
wenn du deinen Raspberry Pi im Desktop-Modus betreibst, dann kannst du die einzelnen Schritter dieser Beschreibung folgen. Im Inhalt der Autostart-Datei schreibst du statt “Exec=sudo /var/www/html/pythonprogramm.py” einfach deinen Pfad und Programmnamen, also “Exec = sudo /home/pi/Test.py”.
Im Pythonprogramm musst du bezüglich des Autostarts keinen Befehl verwenden.
Wenn du deinen Python ohne Desktop-Modus betreibst, dann kannst du die Schritte meines Beitrages “Python Script auf dem Raspberry Pi automatisch starten” verwenden.
Viele Grüße
Wolfgang
Hallo,
habe alles so gemacht wie hier beschrieben, aber wenn ich den Pi neustarte öffnet sich das Python Programm nicht.
Bei dem Versuch die rechte für das Programm zu setzen habe ich folgende Meldung erhalten:
chmod: Zugriff auf “TagRead2.py” nicht möglich: Datei oder Verzeichnis nicht gefunden
Hallo,
wenn du in das Verzeichnis wechselst “cd /home/pi/.config/autostart” und dann dir den Inhalt anzeigen lässt “ls”, ist die von dir erstellte Datei vorhanden? Vielleicht hat sich bei der Dateianlage einen Tippfehler eingeschlichen. Auch beachte bitte, Linux unterscheidet zwischen Groß- und Kleinschreibung. Bei der Rechtevergabe musst du dich im Verzeichnis der Datei befinden, oder den Pfad zur Datei mit angeben.
Viele Grüße
Wolfgang
Hallo,
ich habe versucht deiner Anleitung zu folgen und mein Python Script in den Autostart zu legen. Trotz freischalten der Rechte wurde das Script nicht gestartet. Beim Versuch das Script manuell im LXTerminal zu starten erhielt ich folgende Meldung:
pi@raspberrypi:~ $ sudo /home/pi/TestTrafoAnschluesse.py
/home/pi/TestTrafoAnschluesse.py: 1: /home/pi/TestTrafoAnschluesse.py: import: not found
/home/pi/TestTrafoAnschluesse.py: 2: /home/pi/TestTrafoAnschluesse.py: import: not found
/home/pi/TestTrafoAnschluesse.py: 3: /home/pi/TestTrafoAnschluesse.py: import: not found
/home/pi/TestTrafoAnschluesse.py: 4: /home/pi/TestTrafoAnschluesse.py: import: not found
/home/pi/TestTrafoAnschluesse.py: 5: /home/pi/TestTrafoAnschluesse.py: import: not found
/home/pi/TestTrafoAnschluesse.py: 6: /home/pi/TestTrafoAnschluesse.py: import: not found
/home/pi/TestTrafoAnschluesse.py: 7: /home/pi/TestTrafoAnschluesse.py: import: not found
/home/pi/TestTrafoAnschluesse.py: 8: /home/pi/TestTrafoAnschluesse.py: import: not found
/home/pi/TestTrafoAnschluesse.py: 9: /home/pi/TestTrafoAnschluesse.py: import: not found
from: can’t read /var/mail/email.mime.text
/home/pi/TestTrafoAnschluesse.py: 12: /home/pi/TestTrafoAnschluesse.py: Empfaenger: not found
/home/pi/TestTrafoAnschluesse.py: 13: /home/pi/TestTrafoAnschluesse.py: Absender: not found
/home/pi/TestTrafoAnschluesse.py: 14: /home/pi/TestTrafoAnschluesse.py: Passwort: not found
/home/pi/TestTrafoAnschluesse.py: 24: /home/pi/TestTrafoAnschluesse.py:
/home/pi/TestTrafoAnschluesse.py: 29: /home/pi/TestTrafoAnschluesse.py: Syntax error: “(” unexpected (expecting “do”)
Wenn ich das Script ganz normal über Python starte gib es keinerlei Probleme.
Wie bekomme ich es hin, dass das Script trotzdem gestartet wird.
Gruß
Hallo Lisa,
ohne genau zu wissen, welche Bibliotheken du importierst, ist eine Hilfestellung für mich aus der Entfernung leider nicht möglich.
Viele Grüße
Hallo
Vielen Dank für die Beschreibung. Hat super funktioniert
aber wie kann ich den laufenden Prozess beenden um etwas am Programm zu ändern?
Gruß Axel
Hallo Axel,
um den laufenden Prozess zu beenden, lässt Du Dir mit dem Befehl “ps -e” im Terminal alle laufenden Prozesse anzeigen. Dies ist notwendig, damit Du die Prozessidentifikationsnummer (PID) des zu beendenden Prozesses herausfindest. Danach gibst Du im Terminal den Befehl “kill PID” ein, dabei steht PID für die ermittelte Id.
Viele Grüße
Wolfgang
Hallo Herr “Wolfgang”
Mein Name ist Herbert (50 Jahre, verheiratet seit 30 Jahren,habe drei Kinder, vier Enkelkinder und bin ein Hobbyelektroniker der sich z:Z: mit dem Pi “beschäftigt”.
Habe eine Ausbildung zum Bergmechaniker, Umschulung zum Informationselektroniker und noch eine Umschulung zu Anwendungsentwickler.
Leider stehe ich, um jetzt um Ihre/Deine Hilfe zu Bitten, vor dem Problem das mein Python Programm nicht beim auotmatischen Start läuft.
Ich habe fogende Zeilen:
Das Programm befindet sich in /home/pi.
Name des Programm temp.py
meine temp.desktop befindet sich im Verzeichnis
/etc/xdg/autostart
Meine temp.desktop hat folgende Zeilen:
[Desktop Entry]
Name=temp.py
Comment=Kommentar
Type=Application
Exec=sudo idle /home/pi/temp.py
Terminal=false
Gruß aus Dorsten(NRW)
Herbert
Hallo Herbert,
mit dem Aufruf “Exec=sudo idle /home/pi/temp.py” wird die Python IDE mit dem Programmskript geöffnet. Ein automatisches Ausführen ist so nicht möglich. Ich starte meine Skripte mit dem direkten Aufruf, in Deinem Fall “Exec= sudo /home/pi/temp.py”.
Sollte sich bei einem Start des Raspberry Pi bei Deiner Konfiguration nicht öffnen, dann überprüfe den Pfad zur temp.desktop. Wenn Du das Skript direkt startest, läuft es im Hintergrund und das IDLE Fenster wird nicht geöffnet.
Viele Grüße
Wolfgang
Kleiner Hinweis, alle Kommentare werden moderiert.
Dies bedeutet, der Kommentar wird vor der Veröffentlichung durchgelesen und von mir geprüft. Auch behalte ich mir vor, jeden Kommentar zu löschen, der nicht direkt auf das Thema abzielt oder nur den Zweck hat, Leser oder Autoren herabzuwürdigen.
Neuste Beiträge
Kleinen Spickzettel für Raspbian OS Befehle
Entdecke die Welt von Webnist.de
Erfahre mehr über die Hintergründe meines Blogs und wie ich dich bei deinen digitalen Projekten unterstützen kann.Kategorien
KATEGORIEN
Aktuelles Video auf YouTube
Beschreibung der Verwendung eines TTP223B Touch Sensors am GPIO Port des Raspberry Pi mit Python.
Die aktuell 6 derzeit meistbesuchten Beiträge
Beiträge mit den meisten Kommentaren
Funktional Immer aktiv
Vorlieben
Statistiken
Marketing