Seite 1 von 1

Fehlermeldung " No module named 'RPi " auf Laptop umgehen

Verfasst: Freitag 14. April 2023, 12:09
von kiaralle
Hallo,

ich habe auf dem Raspberry ein Python-Script laufen.
Programmiert habe ich das immer im Texteditor auf dem Laptop welcher per SSH zugriff auf den Raspberry hat.
Soweit alles gut.

Um es schöner zu programmieren und Standards einzuhalten möchte ich auf dem Linux-Laptop mit spyder programmieren.
Wenn ich das Script jetzt testen möchte, bekomme ich wie zu erwarten folgende Meldung
File ~/Solarsteuerung/steuerung_14042023.py:7
import RPi.GPIO as GPIO

ModuleNotFoundError: No module named 'RPi'


Kann ich das irgendwie umgehen? GPIO gibt es ja nur auf dem Raspberry.

Ich kopiere das Script bis jetzt immer in den Raspbery und teste in der Konsole an ob es läuft.

Re: Fehlermeldung " No module named 'RPi " auf Laptop umgehen

Verfasst: Freitag 14. April 2023, 14:04
von nezzcarth
Das, wonach du fragst, läuft denke ich auf eine Art Simulation bzw. Mock der Raspi-Features hinaus. Ich weiß nicht, ob es so etwas gibt.

Aber es gibt diverse andere Möglichkeiten:
* GUI + IDE auf dem Raspi laufen lassen und dort remote bedienen (z.B. "traditionell" über den Xserver oder über VNC)
* Ordner, in dem die Daten auf dem Raspi auf dem Laptop übers Netzwerk einbinden (z.B. per sshfs, nfs, …) und dann auf dem Laptop bearbeiten
* Entwicklung lokal, Deployment auf dem Raspi z.B. mit Skripten, Githooks, oder Features der IDE (PyCharm Professional kann sowas z.B.)
* Entwicklung direkt auf dem Raspi mit einem geeigneten Editor (vim, emacs, …). So mache ich das in 99% der Fälle.

Re: Fehlermeldung " No module named 'RPi " auf Laptop umgehen

Verfasst: Freitag 14. April 2023, 14:59
von imonbln
Richtig umgehen kannst du die Exception nicht,
aber wie @nezzcarth schon geschrieben hat, kannst du dir vielleicht einen Workaround implementieren.

Je nach Code kann man unterschiedliche Verfahren nutzen, ich empfehle den Zugriff auf die GPIOs irgendwie zu kapseln, vielleicht in eine eigene Klasse, dann könntest du eine Klasse Implementieren welche mit GPIO arbeitet und eine weiter welche die GPIO simuliert, oder was andere macht. Auf dein PC würdest du dann eine andere Klasse verwenden als auf den PI.

Vielleicht hilft dir auch das Module Mock.GPIO welches behauptet die RPi.GPIO zu Mocken. Eine Quick & Dirty Solution könnte dann schon sowas sein:

Code: Alles auswählen

try:
    import RPi.GPIO as GPIO
except ModuleNotFoundError:
    import Mock.GPIO as GPIO

Re: Fehlermeldung " No module named 'RPi " auf Laptop umgehen

Verfasst: Freitag 14. April 2023, 15:28
von kiaralle
Das Mocken scheint zu funktionieren.
Aber ich glaube ich bleibe doch beim Kate um zu edieren.
Benutze dann weiterhin nur spyder um die Formation usw. besser im Griff zu haben.

Danke in die Runde.

Re: Fehlermeldung " No module named 'RPi " auf Laptop umgehen

Verfasst: Freitag 14. April 2023, 15:38
von Dennis89
Hallo,

Anstatt RPi kannst du gpiozero benutzen. Das hat Mock-Pins dabei und du kannst alles am Laptop simulieren.

Wenn ich später am Laptop bin kann ich dir ein Beispiel posten. Ansonst ist die Doku von gpiozero gut. Du schreibst damit auch viel lesbareren Code wie mit RPi.

Grüße
Dennis