Über den Fehler, den ich beim Versuch, Adafruit_DHT von Python auf Raspberry Pi zu verwenden, festgestellt habe

Einführung

Beim Versuch, den Temperatur- / Feuchtigkeitssensor AM2302 auf dem Raspberry Pi mit Python mit dem Paket Adafruit_DHT zu handhaben, ist ein Fehler aufgetreten. Der Fehler zum Zeitpunkt der Installation kann durch Ausführen eines einfachen Vorgangs vermieden werden. Da jedoch der Fehler, der beim tatsächlichen Erfassen der Temperatur und Luftfeuchtigkeit auftritt, nicht vermieden werden konnte, wurde der Fehler ebenfalls vermieden.

Ich habe bestätigt, dass der Fehler sowohl auf Raspberry Pi 4B / 4 GB, OS Raspbian Lite als auch auf Ubuntu Server 20.04 aufgetreten ist. Python hat 3.8.5 von pyenv installiert und Pipenv verwendet.

Fehler aufgetreten

Zunächst versuche ich gehorsam von pipenv zu installieren.

$ pipenv install Adafruit_DHT
Installing Adafruit_DHT…
Error:  An error occurred while installing Adafruit_DHT!
Error text: Collecting adafruit_dht
  Downloading Adafruit_DHT-1.4.0.tar.gz (15 kB)
Building wheels for collected packages: adafruit-dht
  Building wheel for adafruit-dht (setup.py): started
  Building wheel for adafruit-dht (setup.py): finished with status 'error'
  Running setup.py clean for adafruit-dht
Failed to build adafruit-dht
Installing collected packages: adafruit-dht
    Running setup.py install for adafruit-dht: started
    Running setup.py install for adafruit-dht: finished with status 'error'
---
Unterlassung
---
✘ Installation Failed

Ich konnte bestätigen, dass die Installation fehlgeschlagen ist. Löschen Sie als Nächstes das Paket von GitHub, fügen Sie einen Parameter hinzu, der angibt, dass das von Ihnen verwendete Gerät ein Raspberry Pi ist, und installieren Sie es manuell.

$ git clone https://github.com/adafruit/Adafruit_Python_DHT.git
$ cd Adafruit_Python_DHT
$ python setup.py install --force-pi
Finished processing dependencies for Adafruit-DHT==1.4.0

Nachdem Sie bestätigt haben, dass die Installation abgeschlossen ist, ermitteln wir die Temperatur.

$python
>>> import Adafruit_DHT
>>> Adafruit_DHT.read_retry(Adafruit_DHT.AM2302, 2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pi/Projects/temp/Adafruit_Python_DHT/Adafruit_DHT/common.py", line 94, in read_retry
    humidity, temperature = read(sensor, pin, platform)
  File "/home/pi/Projects/temp/Adafruit_Python_DHT/Adafruit_DHT/common.py", line 80, in read
    platform = get_platform()
  File "/home/pi/Projects/temp/Adafruit_Python_DHT/Adafruit_DHT/common.py", line 63, in get_platform
    raise RuntimeError('Unknown platform.')
RuntimeError: Unknown platform.

Wird sein.

Lösung

Beenden Sie die Verwendung von Python 3.8.5 und verwenden Sie Python 3.7.9.

Kommentar

Adafruit_DHT ist eine Standard-Python-Bibliothek zum Erkennen der Plattform, auf der ein Paket verwendet wird Informationen von der Plattform abrufen # L47). Eine von \ ('armv7l-with-debian', 'armv7l-with-ubuntu', 'armv7l-with-glibc2.4', 'armv7l-with-arch' ) in den hier erhaltenen plattformspezifischen Informationen Funktioniert wenn enthalten ist. Zu diesem Zeitpunkt war der Unterschied zwischen den Ausgaben von Python 3.8.5 und Python 3.7.9 die Ursache des Fehlers.

Nachfolgend finden Sie die tatsächlichen Plattforminformationen zu Raspbian Lite, die von jeder Python-Version bestätigt wurden.

Python3.8.5

>>> import platform
>>> platforfm.platform()
'Linux-5.4.51-v7l+-armv7l-with-glibc2.28'

Python3.7.9

>>> import platform
>>> platforfm.platform()
'Linux-5.4.51-v7l+-armv7l-with-debian-10.4'

Beiseite

Erstens zielt das Gerät mit dem Namen Beaglebone Black auf die oben genannte Erkennung ab, und Raspberry Pi ist [ein anderer Ort](https://github.com/adafruit/Adafruit_Python_DHT/blob/master/Adafruit_DHT/platform_detect.py# Ich strebe eine Erkennung mit L40 an. Das in / proc / cpuinfo auf dem Raspberry Pi 4B aufgeführte Hardwareelement ist jedoch BCM2711, das von diesem Programm nicht erkannt wird.

Nachtrag

Zunächst wurde das Adafruit_Python_DHT-Repository derzeit archiviert und nicht verwaltet. Stattdessen gibt es ein Adafruit_CircuitPython_DHT-Repository. Verwenden Sie dieses also. Für diese Person konnte Python 3.8.5 problemlos installiert werden. Beachten Sie jedoch, dass Sie es nur importieren können, wenn Sie bei Verwendung auch das Paket RPi.GPIO installieren. Installieren Sie dazu Adafruit_CircuitPython_DHT und RPi.GPIO mit dem folgenden Befehl.

$ pip install adafruit-circuitpython-dht RPi.GPIO

Im Folgenden finden Sie den Fall, wenn Sie versuchen, adafruit-Circuitpython-dht in einer Umgebung zu importieren, in der RPI.GPIO nicht installiert ist.

>>> import adafruit_dht
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pi/temp/.venv/lib/python3.8/site-packages/adafruit_dht.py", line 34, in <module>
    from digitalio import DigitalInOut, Pull, Direction
  File "/home/pi/temp/.venv/lib/python3.8/site-packages/digitalio.py", line 15, in <module>
    from adafruit_blinka.microcontroller.bcm283x.pin import Pin
  File "/home/pi/temp/.venv/lib/python3.8/site-packages/adafruit_blinka/microcontroller/bcm283x/pin.py", line 2, in <module>
    import RPi.GPIO as GPIO
ModuleNotFoundError: No module named 'RPi'

Recommended Posts

Über den Fehler, den ich beim Versuch, Adafruit_DHT von Python auf Raspberry Pi zu verwenden, festgestellt habe
Ich möchte Python GUI ausführen, wenn Raspberry Pi startet
Verwenden Sie Python auf Raspberry Pi 3, um die LED zu beleuchten (Hello World)
Verwenden Sie Python auf Raspberry Pi 3, um die LED mit Schaltersteuerung zu beleuchten!
Verwendung des digitalen 1-Draht-Temperatursensors DS18B20 mit Raspberry Pi von Python
Verwenden Sie Python auf Raspberry Pi 3, um die LED zu beleuchten, wenn es dunkel wird!
Verwendung von Raspeye Relay Module Python
[Python] Hinweise beim Versuch, Numpy mit Cython zu verwenden
Ich erhalte [Fehler 2055], wenn ich versuche, mit Heroku eine Verbindung zu MySQL herzustellen
Ich habe versucht, das Python-Skript unter Windows 10 von 2.7.11 auf 3.6.0 zu ändern
Steuern Sie den Motor mit einem Motortreiber mit Python auf Raspberry Pi 3!
Ein Fehler beim Einfügen von Pygame in Python3 auf Himbeer-Pi wurde behoben
Hinweise zum Verbinden von Bluetooth von einem Smartphone / PC mit Raspeye 4
Ich möchte ein Glas aus Python verwenden
Verwenden Sie den Grove-Sensor mit Raspberry Pi
Verwenden Sie den Temperatur- / Feuchtigkeits- / Drucksensor BME280 von Python mit Raspberry Pi 2
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
Ich erhalte einen UnicodeDecodeError, wenn ich versuche, mit Python sqlalchemy eine Verbindung zu Oracle herzustellen
[HyperledgerIroha] Abfrage mit Python-Bibliothek
Ich wollte die Python-Bibliothek von MATLAB verwenden
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
Über den Fehler, den ich beim Versuch, Adafruit_DHT von Python auf Raspberry Pi zu verwenden, festgestellt habe
Ich habe eine Python-Bibliothek erstellt, um die API von LINE WORKS aufzurufen
Nachdem ich die Python-Bibliothek recherchiert hatte, verstand ich ein wenig über ei.info.
Ich möchte verhindern, dass der an den Raspberry Pi (jessie) angeschlossene Lautsprecher beim Neustart des Betriebssystems bon wird (Python-Skript).
Verwendung von Raspeye Pie Camera Python
Lassen Sie den Summer mit Python auf Raspberry Pi 3 erklingen!
Fehler beim Versuch, psycopg2 in Python zu installieren
Stellen Sie mit Python auf Raspberry Pi eine Verbindung zu MySQL her
Ich habe eine Frage. Protokollpuffer für Himbeer-Pi-3-Modell B können nicht erstellt werden.
Ich möchte Python in der Umgebung von pyenv + pipenv unter Windows 10 verwenden
Bei der Konvertierung von CSV in JSON mit Python bin ich auf einen Zeichencode gestoßen
Ich habe eine Fehlermeldung erhalten, als ich opencv mit Raspeye in Python3 eingefügt habe [Remedy]
Verwenden Sie dHash, um eine Szene in einem Rennspiel auf der Strecke zu lokalisieren
[IBM Cloud] Ich habe versucht, über Cloud Funtions (Python) auf die Tabelle Db2 on Cloud zuzugreifen.
[Python] Ich habe versucht, den Typnamen als Zeichenfolge aus der Typfunktion abzurufen
Wenn ich versuche, Jupiter Notebook auf einem Mac zu verwenden, kann ich nur Python2 auswählen
Was tun, wenn der Fehler RuntimeError angezeigt wird: Python wird nicht als Framework installiert, wenn Sie versuchen, matplitlib und pylab in Python 3.3 zu verwenden
Vom Einrichten des Raspberry Pi bis zur Installation der Python-Umgebung
Überlegen Sie, wie Sie Python auf Ihrem iPad programmieren können
Eine Geschichte, die fehlgeschlagen ist, als versucht wurde, das Suffix mit rstrip aus einem String zu entfernen
[Python] Ich möchte nur den Index verwenden, wenn ich eine Liste mit einer for-Anweisung schleife
Was tun, wenn python3 venv auf Raspberry Pi nicht gut funktioniert?
[Python] Ich habe ein System erstellt, um "das Rezept, das ich wirklich will" von der Rezeptseite einzuführen!
Als ich versuchte, eine Socket-Kommunikation mit Raspberry Pi durchzuführen, war das Protokoll anders
Ich blieb stecken, als ich versuchte, einen relativen Pfad mit relative_to () in Python anzugeben
Eine Funktionsnotiz, die nützlich ist, wenn Sie den Debugger aufrufen möchten, wenn beim Ausführen eines Python-Skripts ein Fehler auftritt.
Eine Geschichte über einen Python-Anfänger, der versucht, Google-Suchergebnisse mithilfe der API abzurufen
Wenn ich versuche, Pandas unter macOS zu importieren, wird die Fehlermeldung Kein Modul mit dem Namen'_bz2 'angezeigt.
Übergeben von Argumenten beim Aufrufen von Python-Skripten über Blender in der Befehlszeile
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Informationen zur Option --enable-shared beim Erstellen von Python unter Linux
Ein Hinweis auf Missverständnisse beim Versuch, das gesamte selbst erstellte Modul mit Python3 zu laden
Ausgabe auf "7 Segment LED" mit Python mit Raspberry Pi 3!
Eine Geschichte über den Versuch, Linter mitten in einem Python (Flask) -Projekt vorzustellen
Ich möchte R-Datensatz mit Python verwenden
Ich erhalte eine Fehlermeldung, wenn ich versuche, Python mit pyenv in Catalina auf 3 Serien zu erhöhen
Ich möchte über die Verbindungsumgebung benachrichtigt werden, wenn RaspberryPi eine Verbindung zum Netzwerk herstellt
Wenn ich versuche, die Daten in DynamoDB mit Python (boto3) zu aktualisieren, wird "ExpressionAttributeNames enthält ungültigen Schlüssel: Syntaxfehler; Schlüssel: <Schlüsselname>" angezeigt.
Verwenden Sie AWS Lambda, um einen Mechanismus zu erstellen, der Slack benachrichtigt, wenn der von CloudWatch überwachte Wert in Python überschritten wird
Slack-Benachrichtigung, wenn ein bestimmtes Wort auf Twitter mit Heroku mit Python gemurmelt wird