Autostart eines Python Programm auf dem Raspberry Pi

Veröffenticht am 23.09.2016    von     in der Kategorie Raspberry Pi, Raspberry Pi OS     bisher 20 Reaktionen    Zuletzt überarbeitet am 27.05.2024


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.

 

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.

 

In dem Verzeichnis öffnest du eine Textdatei mit einem Texteditor, ich verwende hierzu den im Raspbian OS vorhandenen nano Editor.

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.

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.

Sollte dein Programm nicht unter den Prozessen sein, musst du eventuell noch die entsprechenden Rechte setzen.

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.


Transparenz-Hinweis:

Die auf dieser Seite verwendeten Produktlinks sind sogenannte Affiliate-Links zu einem Partnerprogramm. Für dich entstehen dadurch keine Mehrkosten, ich erhalte durch deinen Kauf über den Link eine kleine Provision.


Wolfgang Raab – Betreiber von webnist.de

Mein Name ist Wolfgang, ich beschäftige mich nun schon seit 1985 mit der EDV und im Besonderen mit der Software- und Webentwicklung.

Auf diesem Blog schreibe ich über Dinge, die mich begeistern, beschäftigen und ich der Meinung bin, es könnte für andere interessant und hilfreich sein.

Als großer Fan des Raspberry Pi finde ich es spannend, wie man den kleinen Computer in Verbindung mit dem IoT und Smart Home nutzen kann. Deshalb behandeln viele Beiträge auch genau dieses Thema.

Ich bin ein leidenschaftlicher Leser und Fotograf. Wenn ich nicht gerade in einem spannenden Roman versinke, bin ich oft unterwegs, um die Schönheit der Welt mit meiner Kamera einzufangen und zu teilen.

Weitere Infos und Fotos findest du auf einem der folgenden Plattformen.






Mehr erfahren?

Besuche die "About"-Seite meines Blogs und finde heraus, wie du mit mir in den Bereichen Web- und Mobile-Programmierung und Raspberry Pi zusammenarbeiten kannst. Hier beginnt deine digitale Reise.


Unterstützen

Dieser Beitrag hat dir gefallen und konnte dir bei deinem Projekt oder Problem behilflich sein? Dann würde ich mich sehr freuen, wenn du dich mit einer noch so kleinen Spende erkenntlich zeigen möchtest.




  • Karl-Heinz Schoppelrey schrieb am 24. Februar 2024:

    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

    • Raab Wolfgang schrieb am 24. Februar 2024:

      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

  • Karl-Heinz schrieb am 21. Februar 2024:

    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!!!

    • Raab Wolfgang schrieb am 22. Februar 2024:

      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

  • Domey schrieb am 15. Juli 2019:

    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!!

    • Wolfgang schrieb am 16. Juli 2019:

      Hallo Domey,
      vielen lieben Dank für Deine positive Rückmeldung und dem Tipp mit “Exec=python3/…”.
      Viele Grüße
      Wolfgang

  • Sebastian schrieb am 13. Juni 2019:

    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 ?

    • Wolfgang schrieb am 17. Juni 2019:

      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

  • Daniel schrieb am 20. August 2018:

    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.

    • Wolfgang schrieb am 20. August 2018:

      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

  • Martin Hüser schrieb am 23. Juli 2018:

    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

    • Wolfgang schrieb am 23. Juli 2018:

      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

  • Lisa Meier schrieb am 20. Februar 2018:

    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ß

    • Wolfgang schrieb am 1. März 2018:

      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

  • Axel Burkhardt schrieb am 16. Februar 2018:

    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

    • Wolfgang schrieb am 16. Februar 2018:

      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

  • Herbert Hoellger schrieb am 2. März 2017:

    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

    • Wolfgang schrieb am 3. März 2017:

      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


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Notwendige Felder sind mit * markiert.

 

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.

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.

Aktuelles Video auf YouTube

Beschreibung der Verwendung eines TTP223B Touch Sensors am GPIO Port des Raspberry Pi mit Python.