树莓派Zero W+Berryconda3环境下Python3无法导入Adafruit_DHT求助
解决Berryconda3环境下Python3无法导入Adafruit_DHT的问题
我明白你折腾10小时有多崩溃,这个问题本质是系统Python3和Berryconda3的环境完全隔离,你之前的安装操作都把包放到了系统Python的目录里,而conda的Python只会检索自己环境下的包目录。咱们一步步来搞定:
步骤1:激活Berryconda3环境
首先得确保你操作的是conda专属的Python环境,而不是系统默认的:
source ~/berryconda3/bin/activate
激活后命令行提示符会多出(base)(或你自定义的环境名),这时候才是在conda环境内操作。
步骤2:用conda环境的Python手动编译安装Adafruit_DHT
你之前已经下载过Adafruit的DHT源码包了,直接进入源码目录:
cd Adafruit_Python_DHT
关键操作:用conda自己的Python3执行安装命令,不要用系统的python3,这样安装路径会自动指向conda环境的包目录:
~/berryconda3/bin/python3 setup.py install --force-pi
这个命令会把Adafruit_DHT直接装到你的Berryconda3环境里,而不是系统的/usr/local/lib/python3.5/dist-packages。
步骤3:解决platform_detect缺失的问题
如果安装后仍提示缺少这个模块,不用慌,它就在你下载的源码包里。先找到conda环境的site-packages路径:
~/berryconda3/bin/python3 -c "import site; print(site.getsitepackages()[0])"
把输出的路径(比如~/berryconda3/lib/python3.6/site-packages)记下来,然后把源码里的Adafruit_DHT目录复制过去:
cp -r Adafruit_Python_DHT/Adafruit_DHT <刚才输出的路径>/
步骤4:验证安装是否成功
在激活的conda环境里启动Python3,测试导入和传感器读取:
import Adafruit_DHT # 替换成你的传感器型号和实际接线引脚 sensor = Adafruit_DHT.DHT11 pin = 4 humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) if humidity is not None and temperature is not None: print(f'Temp={temperature:.1f}*C Humidity={humidity:.1f}%') else: print('Failed to get reading. Check your wiring!')
如果能正常输出温湿度,就彻底解决问题了。
为什么之前的方法没用?
- 用
sudo python3 setup.py install是给系统Python3装包,conda的Python根本检索不到; - 复制egg文件没用,因为conda环境的包管理结构和系统Python不同,必须通过conda环境自身的Python完成安装;
- 直接调用
pip3会提示命令找不到,因为conda环境的pip没加入系统PATH,得用~/berryconda3/bin/python3 -m pip来调用。
内容的提问来源于stack exchange,提问作者Philipp
相关产品推荐
相关产品推荐

