Python Script auf dem Raspberry Pi automatisch starten
Dieser kurze Beitrag soll dir zeigen, wie du dein in Python geschriebenes Programm beim Start des Raspberry Pi automatisch starten und ausführen lässt. Im Gegensatz zu meinem Beitrag “Autostart eines Python Programms auf dem Raspberry Pi“, ist dieser Ansatz für den Betrieb des RasPi ohne Desktop-Modus möglich.
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.
Aktualisierung: Stelle sicher, dass dein Python-Skript ausführbar ist, indem du ihm zum Beispiel Ausführungsrechte gibst:
1 |
chmod +x /pfad/zum/skript.py |
Erweiterung der Autostart – Datei
Zuerst öffnest du über dein Terminal-Programm die Datei rc.local. Das notwendige Verzeichnis für die Datei findest du im Pfad /etc/. Folgender Befehl ruft den Texteditor Nano zur Bearbeitung der notwendigen Datei auf.
1 |
sudo nano /etc/rc.local |
Ergänzung der Autostart – Datei
Nun ergänzt du den Inhalt der Datei mit folgender Anweisung. Diese muss vor dem vorhandenen “exit 0” am Ende der Datei eingefügt werden und den Pfad zum existierenden Skript beinhalten.
1 |
python3 /home/pi/test.py & |
Im obigen Beispiel wird die Datei test.py im Verzeichnis “home/pi” gestartet.
Hinweis zum Programmaufruf
Die Anweisung wird mit einem “&” Zeichen ergänzt, dies ist insoweit wichtig, denn sollte dein Programm nicht nur einmal durchlaufen, sondern in einer Schleife im Hintergrund laufen, würde der Raspberry Pi ohne “&” ggf. in einer Endlosschleife hängen bleiben und nicht vollständig booten.
Letzte Anmerkung
Bedenke bitte, jegliche Änderung am Programm-Code wird erst nach einem Neustart wirksam.
Funktioniert einwandfrei. Danke dafür.
Vielen Dank für das positive Feedback. 🙂
Hallo Wolfgang,
beim klicken auf Antworten ist nichts passiert, deswegen versuche ich es jetzt einfach so. Vielen Dank für Deine sehe schnelle Antwort. Das scheint genau das richtige zu sein. Ich werde mir das genau anschauen und das ausprobieren.
Vielen vielen Dank.
Grüße
Sven
Hallo Wolfgang,
ich möchte gerne das ein python script 3 mal täglich abläuft, alle 8 Stunden einmal. ich könnte dies nun mit time und wait so eintakten, aber mir wäre es lieber das Programm 3 mal separat zu starten und eine statusmeldung abliefern, wenn das programm nicht gestartet werden konnte. So würde das Programm in der übrigen Zeit keine ressourcen verbrauchen und ich könnte vielleicht noch ein paar andere programme in dieser Zeit automaitisert ablaufen lassen.
Vielen Dank im Voraus
Viele Grüße
Sven
Hallo Sven,
vielen Dank für Deinen Kommentar. Für die regelmäßige Ausführung von Aufgaben bzw. Skripten bietet sich die Aufgabenplanung an. Hier kannst Du regelmäßig Skripte ausführen lassen. Unter Linux bzw. dem Raspberry Pi bietet sich hierzu u.a. crontab an.
Eine Beschreibung findest du unter https://www.raspberrypi.org/documentation/linux/usage/cron.md
Viele Grüße
Wolfgang
Hi
Wie bekomme ich das Programm dann wieder in den Vordergrund um zu sehen ob das Programm lauft
Hallo,
über das Terminal kannst du dir mit dem Befehl ps -ax alle Prozesse anzeigen lassen. Dein Programm sollte hier aufgelistet sein. Um das Programm zu beenden, benutze den Befehl kill (plus die Prozess-ID(PID) = z.B. kill 1022).
Viele Grüße
Wolfgang
Norbert-Eiche@t-online.de
Hallo Wolfgang ich komme nicht weiter mit meinem Autostart , hier mein Skript ich benutze cd /home/pi/.config/ autostart dann
sudo nano autostart.desktop und der Eintrag lautet
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=autostart.py
Exec=sudo idle /home/pi/autostart.py
das IDLE Fenster mit dem Code wird geöffnet , aber nicht ausgeführt F5 !
brauche ich noch einen extra startbefehl für den Python Programmstart !
Grüße Norbert
Hallo Norbert,
ein Startbefehl für die IDLE ist mir nicht bekannt. Aber warum startest du dein Skript nicht direkt mit dem Befehl python bzw. python3?
Viele Grüße
Wolfgang
Hallo Wolfgang vielen Dank für deine gute Anleitung zum Autostart , leider startet mein Python Programm nicht , es wird aber das Python Fenster geöffnet
aber nicht ausgeführt ! woran kann es noch liegen !
Raich den 15.07.2019
Hallo Norbert,
vielen Dank für Dein positives Feedback. Mein erster Gedanke ist, hast Du den vollständigen und richtigen Pfad zum Skript angegeben?
Viele Grüße
Wolfgang
Hallo Wolfgang
ich habe bislang mein python-Skipt wie in “Autostart eines Python Programms auf dem Raspberry Pi“ beschrieben, gestartet. -Danke
Jetzt habe ich das neue Image “2019-06-20-raspbian-buster.zip” installiert und jetzt funktioniert es nicht mehr.
Die *.py-Datei habe ich schon ausführbar gemacht, mit sudo …. habe ich es versucht – ich kann keinen Fehler finden.
Wenn ich “ps -ax” aufrufe, wird der python-Prozess nicht angezeigt.
Starte mein Skript über eine SSH-Verbindung, läuft alles prima.
Was mache ich falsch?
Hallo,
persönlich bin ich noch nicht auf “Buster” umgestiegen. Was ich allerdings gelesen habe, die Autostartdatei sollte unter “/etc/xdg/autostart/” abgespeichert werden. Die Erweiterung bleibt wie im eigentlichen Beitrag Autostart eines Python Programm auf dem Raspberry Pi beschrieben “.desktop”.
Viele Grüße
Wolfgang
Hallo,
Ich möchte ein Programm für eine Kamera starten lassen.
Dafür habe ich alle oben genannten Schritte soweit gemacht.
In diesem Programm wird ein Fenster geöffnet, um das Bild der Kamera anzuzeigen.
Allerdings funktioniert dies nicht. Ich habe bereits auch schon andere Wege getestet, bis jetzt wurde allerdings höchstens die Kamera ein paar Sekunden gestartet und dann wieder beendet. Wenn ich das Programm so starte funktioniert es ohne Probleme.
Ich hoffe mir kann schnell jemand helfen.
Hallo,
der Beitrag beschreibt den Autostart eines Skriptes für den Betrieb des RasPi ohne Desktop-Modus. Da du ein Fenster mit dem Kamerabild öffnest, gehe ich allerdings von einem Betrieb im Desktop-Modus aus. Vielleicht hilft dir mein Beitrag “Autostart eines Python Programm auf dem Raspberry Pi“.
Viele Grüße
Wolfgang
Wenn ich das alles so mache wird die Datei dann ausgeführt als wenn ich in SSH “python test.py” eingebe?
Ich muss meine Datei normalerweise mit “sudo python3 test.py” starten. Funktioniert das auch mit diese Methode?
Hallo,
Deine Vermutung ist richtig. Der Aufruf gleicht der Terminal- bzw. SSH-Eingabe. Wenn Du ein Python 3 Skript verwendest, muss Dein Aufruf entsprechen mit “python3” erfolgen.
Viele Grüße
Wolfgang
Wie beende ich das geöffnete Programm wieder? Ich kann nichtmals mehr die Konsole öffnen.
Hallo Mirko, (z.B. kill 1187) das Skript beenden.
hier helfen die normalen Linuxbefehle. Öffne das Terminal (STRG*ALT+T) und lasse Dir mit ps -ax alle Prozesse anzeigen. Über die Prozess-ID (PID) kannst Du mit dem Befehl kill
Viele Grüße
Wolfgang
Hi Wolfgang,
eine Frage: muss das py-File mittels chmod +x ausführbar gemacht werden, oder ist das nicht notwendig?
Danke und Gruß
Raul
Hallo Raul,
wenn Du Dich als User “pi” anmeldest, ist dieser Schritt nicht unbedingt notwendig. Da ich Deinen Anwendungsfall nicht kenne, würde ich aus meiner Erfahrung heraus dies Ausführbarkeit der Datei empfehlen.
Mit chmod +x machst Du das py-File für alle ausführbar. Ob dies gewünscht ist, kommt auf den Anwendungsfall.
Viele Grüße
Wolfgang
Hallo Wolfgang,
Danke für die Anleitung. Vom Prinzip funktioniert das bei mir auch bis auf eine Kleinigkeit. In meinem Python-Script frage ich die IP-Adresse des Raspberry-PI im Internet mit IPIFY (https://pypi.org/project/ipify) ab. Leider funktioniert das nicht mehr, wenn mein Script über die rc.local gestartet wird. Dann erhalte ich eine Exception von IPIFY vom Typ ConnectionError. Der Raspberry-PI ist aber nach dem Start über das Netzwerk erreichbar. Wenn ich das Script über die Konsole starte funktioniert es wunderbar. Haben sie eine Idee woran das liegt?
MfG
Hallo Marcel,
für mich hört es sich so an, als wäre der Raspberry noch nicht komplett hochgefahren und hat noch keine Verbindung mit dem Router aufgebaut. An deiner Stelle würde ich in deinem Python-Skript entweder bei Programmstart eine Pause einfügen oder über eine Netzwerkabfrage abwarten, bis die Verbindung zum Router aufgebaut ist.
Viele Grüße
Wolfgang
Hallo,
Ich versuche das nun seit Stunden über Cronjob -e und andere sachen das Programm FreqShow auf einem Raspberry 3 mit einem kleinen 3.5″ Dsiplay automatisch zu starten.
Nun es Funktioniert nichts, entweder der Raspi hängt sich beim start auf oder er geht nur normal in den Desktop.
Habe jetzt Ihre Anleitung versucht und es geht immer noch nicht.
Starten tut das Programm wenn ich am Raspi in der Konsole pi@Piscanner:~/FreqShow $ sudo python freqshow.py
eingebe.
Aufgrund der Mobilität sollte keine Tastatur dranhängen sondern das programm direkt starten nach dem reboot.
Vielleicht wissen Sie ja noch eine Lösung?
73
MfG
Grassator
Hallo,
das Programm FreqShow kenne ich nicht, allerdings gehe ich anhand des Kommentarinhalts von einer Desktop-Anwendung aus. Hierzu wäre vielleicht mein Beitrag Autostart eines Python Programm auf dem Raspberry Pi hilfreich.
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