Pythonprogramm automatisch starten

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
yRyu-l
User
Beiträge: 7
Registriert: Dienstag 14. Januar 2020, 10:42

Guten Tag ich wollte einmal fragen ob mi jemand mit meinem Programm helfen kann. Ich bin Python Neueinsteiger und kenne noch nicht alles. Deswegen ist meine Frage an euch wie ich dieses Programm automatisch Starten lasse ohne dafür einen command ins Terminal einzugeben.

import smbus
import time

bus = smbus.SMBus(1)

config = [0x00, 0x00]
bus.write_i2c_block_data(0x18, 0x01, config)

bus.write_byte_data(0x18, 0x08, 0x03)

time.sleep(0.5)

while True:
data = bus.read_i2c_block_data(0x18, 0x05, 2)

ctemp = ((data[0] & 0x1F) * 256) + data[1]

if ctemp > 4095 :
ctemp -= 8192
ctemp = ctemp * 0.0625
ftemp = ctemp * 1.8 + 32

print ("Temperature in Celsius is : %.2f C" %ctemp)
print ("Temperature in Fahrenheit is : %.2f F" %ftemp)
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Du musst die Datei sowei ich weiß nur in den Autostart Ordner packen (am besten eine Verknüpfung), den Autostart Ordner öffnest du (unter Windows) in dem du die Windowstaste + R drückst und dort in "Ausführen" dann "shell:startup" eingibst.
yRyu-l
User
Beiträge: 7
Registriert: Dienstag 14. Januar 2020, 10:42

Vielen Dank für die Antwort aber leider habe ich eine Wichtige Information vergessen. Ich will den Autostart auf dem Raspberry PI ausführen und nicht in Windows.
Kirikkayis
User
Beiträge: 85
Registriert: Freitag 18. Januar 2019, 08:02

1. Skript rechte vergeben

Code: Alles auswählen

sudo chmod +x /.../test.py
2. Script in rc.local eintragen

Code: Alles auswählen

sudo nano /etc/rc.local
(Hier vor exit 0 den Pfad zu deinem Skript eingeben und ein "&" am ende: z.B. /home/pi/test.py &
3.

Code: Alles auswählen

sudo reboot
Dein Skript sollte nun nach dem Neustart "automatisch" laufen. Zum Überprüfen kannst du folgendes eingeben:

Code: Alles auswählen

ps -ef | grep python
Ausgabe sollte ca wie folgt aussehen:
pi@raspberrypi ps -ef | grep python
root 2055 1 10 13:47 ? 00:00:01 python /home/pi/test.py
yRyu-l
User
Beiträge: 7
Registriert: Dienstag 14. Januar 2020, 10:42

Vielen Dank :)
nezzcarth
User
Beiträge: 1754
Registriert: Samstag 16. April 2011, 12:47

Die gezeigte Methode mit rc.local ist veraltet und sollte nicht mehr verwendet werden. Heute schreibt man für so etwas eine systemd-Unit.
Siehe zum Einstieg etwa:
https://wiki.ubuntuusers.de/Howto/syste ... _Beispiel/
dermaxem
User
Beiträge: 20
Registriert: Montag 30. Mai 2022, 16:53

kann das sein, das es der Aufruf "python3 /home/pi/sctipt.py&" lauten muss?
Bei mir geht aber keiner von beiden Wegen mit oder ohne "python3" vor dem Script scheint egal zu sein.
Kann man irgendwo ein log auslesen, aus dem man erkennen kann, warum das nicht startet?
narpfel
User
Beiträge: 690
Registriert: Freitag 20. Oktober 2017, 16:10

@dermaxem: Mit einer systemd-Service-Unit landen die Ausgaben auch im Fehlerfall automatisch im Syslog und können mit `journalctl` abgefragt werden. Das ist unter Anderem der Grund, warum man sowas nicht mehr mit `/etc/rc.local` macht.
Benutzeravatar
Dirki
User
Beiträge: 69
Registriert: Donnerstag 23. Juni 2016, 16:11

Alternativ kannst du auch einen Cronjob einrichten:
Als Benutzer, der das Skript ausführen soll:
crontab -e

Code: Alles auswählen

@reboot Pfad/zu/deinen/Script.py
Antworten