Seite 1 von 1
Beim Start über rc.local bekomme ich einen Fehler.
Verfasst: Sonntag 26. April 2020, 10:22
von Jo120
Hallo,
mein Programm läuft, wenn ich es im SPE Editor starte.
Von der Eingabeebene kann ich es auch starten.
Beim Start über rc.local bekomme ich einen Fehler.
Traceback (most recent call last):
File "/home/pi/Steuerung.py", line 6, in <module>
import mysql
ImportError: No module named mysql
Das Modul ist aber installiert.
MfG
Jo120
Re: Beim Start über rc.local bekomme ich einen Fehler.
Verfasst: Sonntag 26. April 2020, 10:28
von __deets__
Du verwendest ein anderes Python. Am wahrscheinlichsten ist die Nutzung von python2, wenn es python3 sein sollte. Oder umgekehrt. Wobei man nur noch alles mit python3 machen sollte.
Und der Standardfehler, der dir danach auf die Fuesse fallen wird: man benutzt kein rc.local. Man benutzt eine systemd unit, um das Skript zu starten, und vor allem um es nur dann zu starten, wenn die mysql-DB schon gestartet ist. Denn sonst bricht es eh mit einem Verbindungsfehler ab.
Re: Beim Start über rc.local bekomme ich einen Fehler.
Verfasst: Sonntag 26. April 2020, 10:39
von Jo120
Danke für die schnelle Antwort.
wie kann ich feststellen welche Pythonversion verwendet wird?
MfG
Jo120
Re: Beim Start über rc.local bekomme ich einen Fehler.
Verfasst: Sonntag 26. April 2020, 10:40
von Jo120
Bzw. Wie kann ich beeinflussen welche Version gestartet wird?
Re: Beim Start über rc.local bekomme ich einen Fehler.
Verfasst: Sonntag 26. April 2020, 10:44
von __deets__
python ist ueblicherweise python Version 2. python3 sollte Version 3 sein. Wenn du mehrere Unterversion hast, die du unterscheiden musst, dann gibt es auch pythonX.Y, also zB python3.6 und python3.7
Wenn du in dein Skript folgenden Code ganz oben einfuehrst, wird dir ausgegeben, welchen konkreten Interpreter du nutzt:
Re: Beim Start über rc.local bekomme ich einen Fehler.
Verfasst: Sonntag 26. April 2020, 10:49
von nezzcarth
Jo120 hat geschrieben: Sonntag 26. April 2020, 10:40
Bzw. Wie kann ich beeinflussen welche Version gestartet wird?
Indem du das Skript unter Angabe des absoluten Pfades zum Interpreter startest. Also z.B.: /usr/bin/python3 /home/user/mein_skript.py. Das sollte man bei Sachen, die automatisiert laufen ohnehin tun.
Re: Beim Start über rc.local bekomme ich einen Fehler.
Verfasst: Sonntag 26. April 2020, 12:24
von Jo120
Hallo,
import sys; print(sys.executable)
gibt aus "/usr/bin/python"
wenn ich dann folgende Zeile ausführe: "/usr/bin/python /home/pi/Steuerung.py" bekomme ich die gleiche Fehlermeldung.
MfG
Jo120
Re: Beim Start über rc.local bekomme ich einen Fehler.
Verfasst: Sonntag 26. April 2020, 13:00
von __deets__
Du hast doch oben behauptet dann geht es. Jetzt plötzlich doch nicht?
Nachtrag: mit "es" meinte ich in der Shell.
Re: Beim Start über rc.local bekomme ich einen Fehler.
Verfasst: Sonntag 26. April 2020, 14:00
von Jo120
Sorry, ist etwas verwirrend.
Ich kann das Programm im Editor ausführen.
Es läuft auch wenn ich es im Terminal mit der oben angegebenen Zeile starte.
Wenn ich die Zeile im Autostart (rc.local) einfüge, dann kommt der Fehler.
Es wird immer mit Python2.7 gestartet, bei allen Startversionen.
Kann das auch ein anderer User sein?
Re: Beim Start über rc.local bekomme ich einen Fehler.
Verfasst: Sonntag 26. April 2020, 14:34
von __deets__
Das kann sein, ja. Auch hier hilft die systemd-unit, denn da kannst du angeben als welcher user du das startest.
Re: Beim Start über rc.local bekomme ich einen Fehler.
Verfasst: Sonntag 26. April 2020, 17:48
von __blackjack__
Nur damit das nicht untergeht: Das sollte nicht mehr für Python 2 sein. Portiere das möglichst zeitnah nach Python 3.