À propos de l'erreur que j'ai rencontrée en essayant d'utiliser Adafruit_DHT à partir de Python sur Raspberry Pi

introduction

Lorsque j'ai essayé de gérer le capteur de température / humidité AM2302 sur le Raspberry Pi avec Python en utilisant le package Adafruit_DHT, une erreur s'est produite. L'erreur au moment de l'installation peut être évitée en effectuant une opération simple, mais comme l'erreur qui se produit lors de l'acquisition effective de la température et de l'humidité n'a pas pu être évitée, l'erreur a également été évitée.

J'ai confirmé que l'erreur s'est produite à la fois sur Raspberry Pi 4B / 4GB sur l'ordinateur, Raspbian lite sur le système d'exploitation et Ubuntu Server 20.04, et Python a installé 3.8.5 à partir de pyenv et utilisé Pipenv.

Erreur rencontrée

Tout d'abord, j'essaye d'installer à partir de pipenv docilement.

$ 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'
---
Omission
---
✘ Installation Failed

J'ai pu confirmer que l'installation a échoué. Ensuite, supprimez le package de GitHub, ajoutez un paramètre indiquant que l'appareil que vous utilisez est un Raspberry Pi et installez-le manuellement.

$ 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

Après avoir confirmé que l'installation est terminée, obtenons la température.

$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.

Sera.

Solution

Arrêtez d'utiliser Python 3.8.5 et utilisez Python 3.7.9.

Commentaire

Adafruit_DHT est une bibliothèque Python standard pour détecter la plate-forme sur laquelle le package est utilisé [Obtenir des informations de la plate-forme](https://github.com/adafruit/Adafruit_Python_DHT/blob/master/Adafruit_DHT/platform_detect.py # L47). Un des \ ('armv7l-with-debian', 'armv7l-with-ubuntu', 'armv7l-with-glibc2.4', 'armv7l-with-arch' ) dans les informations spécifiques à la plate-forme obtenues ici Fonctionne si est inclus. À ce moment, la différence entre les sorties de Python 3.8.5 et Python 3.7.9 était la cause de l'erreur.

Vous trouverez ci-dessous les informations de plate-forme réelles sur Raspbian lite confirmées à partir de chaque version de Python.

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'

De côté

En premier lieu, l'appareil appelé Beaglebone Black est destiné à la détection, et Raspberry Pi est [un autre endroit](https://github.com/adafruit/Adafruit_Python_DHT/blob/master/Adafruit_DHT/platform_detect.py# Je vise la détection avec L40). Cependant, l'élément matériel répertorié dans / proc / cpuinfo sur le Raspberry Pi 4B est BCM2711, qui n'est pas détecté par ce programme.

Postscript

En premier lieu, le référentiel Adafruit_Python_DHT était actuellement archivé et non maintenu. À la place, il existe un référentiel Adafruit_CircuitPython_DHT, veuillez donc l'utiliser. Pour cette personne, Python 3.8.5 pourrait être installé sans aucun problème. Cependant, veuillez noter que vous ne pouvez pas l'importer sauf si vous installez également le package RPi.GPIO lors de son utilisation. Pour l'utiliser, installez Adafruit_CircuitPython_DHT et RPi.GPIO avec la commande ci-dessous.

$ pip install adafruit-circuitpython-dht RPi.GPIO

Voici le cas lorsque vous essayez d'importer adafruit-circuitpython-dht dans un environnement où RPI.GPIO n'est pas installé.

>>> 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

À propos de l'erreur que j'ai rencontrée en essayant d'utiliser Adafruit_DHT à partir de Python sur Raspberry Pi
Je veux exécuter l'interface graphique Python au démarrage de Raspberry Pi
Utilisez python sur Raspberry Pi 3 pour éclairer la LED (Hello World)
Utilisez python sur Raspberry Pi 3 pour éclairer la LED avec le contrôle du commutateur!
Utilisation du capteur de température numérique à 1 fil DS18B20 avec Raspberry Pi de Python
Utilisez python sur Raspberry Pi 3 pour éclairer la LED quand il fait noir!
Comment utiliser Raspeye Relay Module Python
[python] Remarques lors de la tentative d'utilisation de numpy avec Cython
J'obtiens [Erreur 2055] en essayant de me connecter à MySQL avec Heroku
J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10
Contrôlez le moteur avec un pilote de moteur en utilisant python sur Raspberry Pi 3!
Résolution d'une erreur lors de la mise en place de pygame dans python3 sur raspberry pi
Remarques sur la connexion Bluetooth d'un smartphone / PC à Raspeye 4
Je veux utiliser jar de python
Utiliser le capteur Grove avec Raspberry Pi
Utilisez le capteur de température / humidité / pression BME280 de Python avec Raspberry Pi 2
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
J'obtiens un UnicodeDecodeError en essayant de me connecter à oracle avec python sqlalchemy
[HyperledgerIroha] Requête avec la bibliothèque Python
Je voulais utiliser la bibliothèque Python de MATLAB
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
À propos de l'erreur que j'ai rencontrée en essayant d'utiliser Adafruit_DHT à partir de Python sur Raspberry Pi
J'ai créé une bibliothèque Python pour appeler l'API de LINE WORKS
Après avoir fait des recherches sur la bibliothèque Python, j'ai un peu compris egg.info.
Je veux empêcher le haut-parleur connecté au Raspberry Pi (jessie) d'être bonked lorsque le système d'exploitation est redémarré (script Python)
Comment utiliser Raspeye Pie Camera Python
Sonnez le buzzer en utilisant python sur Raspberry Pi 3!
Erreur lors de la tentative d'installation de psycopg2 en Python
Connectez-vous à MySQL avec Python sur Raspberry Pi
J'ai une question. Impossible de créer des tampons de protocole sur le raspberry pi 3 modelB.
Je souhaite utiliser Python dans l'environnement de pyenv + pipenv sous Windows 10
Je suis tombé sur un code de caractère lors de la conversion de CSV en JSON avec Python
J'ai eu une erreur lorsque j'ai mis opencv dans python3 avec Raspeye [Remedy]
Utilisez dHash pour localiser sur le parcours à partir d'une scène dans un jeu de course
[IBM Cloud] J'ai essayé d'accéder à la table Db2 on Cloud à partir de Cloud Funtions (python)
[Python] J'ai essayé d'obtenir le nom du type sous forme de chaîne de caractères à partir de la fonction type
Lorsque j'essaye d'utiliser le notebook Jupiter sur Mac, je ne peux sélectionner que python2
Que faire si vous obtenez l'erreur RuntimeError: Python n'est pas installé en tant que framework lorsque vous essayez d'utiliser matplitlib et pylab dans Python 3.3
De la configuration du Raspberry Pi à l'installation de l'environnement Python
Réfléchissez à la programmation de Python sur votre iPad
Une histoire qui a échoué lors de la tentative de suppression du suffixe d'une chaîne avec rstrip
[Python] Je souhaite utiliser uniquement l'index lors de la mise en boucle d'une liste avec une instruction for
Que faire si Python3 Venv ne fonctionne pas bien sur Raspberry Pi
[Python] J'ai créé un système pour introduire "la recette que je veux vraiment" depuis le site de recettes!
Quand j'ai essayé de faire une communication socket avec Raspberry Pi, le protocole était différent
Je suis resté bloqué en essayant de spécifier un chemin relatif avec relative_to () en python
Un mémo de fonction utile lorsque vous souhaitez entrer dans le débogueur si une erreur se produit lorsque vous exécutez un script Python.
Une histoire sur un débutant Python essayant d'obtenir des résultats de recherche Google à l'aide de l'API
Lorsque j'essaye d'importer des pandas sur macOS, j'obtiens l'erreur No module named'_bz2 '
Comment passer des arguments lors de l'appel d'un script python depuis Blender sur la ligne de commande
Ubuntu 20.04 sur raspberry pi 4 avec OpenCV et utilisation avec python
À propos de l'option --enable-shared lors de la construction de Python sous Linux
Une note de malentendu lors de la tentative de chargement de l'intégralité du module self-made avec Python3
Sortie sur "LED 7 segments" en utilisant python avec Raspberry Pi 3!
Une histoire sur la tentative d'introduire Linter au milieu d'un projet Python (Flask)
Je veux utiliser le jeu de données R avec python
J'obtiens une erreur lorsque j'essaie d'élever Python à la série 3 en utilisant pyenv dans Catalina
Je souhaite être informé de l'environnement de connexion lorsque RaspberryPi se connecte au réseau
Lorsque j'essaye de mettre à jour les données sur DynamoDB avec Python (boto3), j'obtiens "ExpressionAttributeNames contient une clé invalide: Erreur de syntaxe; clé: <nom de clé>"
Utilisons AWS Lambda pour créer un mécanisme pour notifier Slack lorsque la valeur surveillée par CloudWatch est dépassée sur Python
Notification Slack lorsqu'un mot spécifique est murmuré sur Twitter en utilisant Heroku avec python