Fehlermeldung " No module named 'RPi " auf Laptop umgehen

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
kiaralle
User
Beiträge: 132
Registriert: Donnerstag 19. August 2021, 19:11

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.
nezzcarth
User
Beiträge: 1764
Registriert: Samstag 16. April 2011, 12:47

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.
imonbln
User
Beiträge: 191
Registriert: Freitag 3. Dezember 2021, 17:07

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
kiaralle
User
Beiträge: 132
Registriert: Donnerstag 19. August 2021, 19:11

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.
Benutzeravatar
Dennis89
User
Beiträge: 1555
Registriert: Freitag 11. Dezember 2020, 15:13

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
"When I got the music, I got a place to go" [Rancid, 1993]
Antworten