无法从“Adafruit_DHT”导入名称“Beaglebone_Black_Driver”

Fla*_*ira 8 python raspberry-pi adafruit sensors

我正在 Raspberrypi 4B 4Gb 上运行最新的 raspberry pi 操作系统“Linux raspberrypi 5.4.51-v7l+ #1327 SMP Thu Jul 23 11:04:39 BST 2020 armv7l GNU/Linux”。

我已经安装了 Python3 sudo apt-get install python3-dev python3-pip

更新了设置工具、轮子和 pip sudo python3 -m pip install --upgrade pip setuptools wheel

并安装了 Adafruit_DHT 模块 sudo pip3 install Adafruit_DHT

之后,我将 DHT22 连接到 gpio4 上的 rpi 并创建了以下 python 脚本:

import Adafruit_DHT
import time
from datetime import datetime

DHT_SENSOR = Adafruit_DHT.DHT22
DHT_PIN = 4
PROBE_NAME = "PI4"

humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)

if humidity is not None and temperature is not None:
    print("{2} - T={0:0.1f} H={1:0.1f}".format(temperature, humidity, datetime.now()))
else:
    print("Failed to retrieve data from humidity sensor")
Run Code Online (Sandbox Code Playgroud)

比我运行它 sudo python3 temp.py

我收到以下错误

Traceback (most recent call last):
  File "temp.py", line 11, in <module>
    humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)
  File "/usr/local/lib/python3.7/dist-packages/Adafruit_DHT/common.py", line 94, in read_retry
    humidity, temperature = read(sensor, pin, platform)
  File "/usr/local/lib/python3.7/dist-packages/Adafruit_DHT/common.py", line 80, in read
    platform = get_platform()
  File "/usr/local/lib/python3.7/dist-packages/Adafruit_DHT/common.py", line 60, in get_platform
    from . import Beaglebone_Black
  File "/usr/local/lib/python3.7/dist-packages/Adafruit_DHT/Beaglebone_Black.py", line 24, in <module>
    from . import Beaglebone_Black_Driver as driver
ImportError: cannot import name 'Beaglebone_Black_Driver' from 'Adafruit_DHT' (/usr/local/lib/python3.7/dist-packages/Adafruit_DHT/__init__.py)
Run Code Online (Sandbox Code Playgroud)

知道如何让它工作吗?

我已经在 raspberry pi zero w 上完成了完全相同的步骤,它开箱即用

Kot*_*oto 16

在“/usr/local/lib/python3.7/dist-packages/Adafruit_DHT/platform_detect.py”中,您可以在elif阶梯的#112行添加以下内容,这样应该可以解决问题。

elif match.group(1) == 'BCM2711':
    return 3
Run Code Online (Sandbox Code Playgroud)

由于最近的 raspbian 升级,看起来 /proc/cpuinfo 中的硬件名称已更改。


小智 5

桥本幸太郎的解决方案是有效的。我的 Pi4 也有同样的问题。

真正的问题是 AdaFruit 不再支持或更新这个旧的 Adafruit_DHT 库。AdaFruit 针对该传感器的新库是“ Adafruit_CircuitPython_DHT ”,可以在此处找到。将代码更新到这个新库可能是个好主意。

https://github.com/adafruit/Adafruit_CircuitPython_DHT