树莓派Python报错No Module named netaddr/configparser求助
解决树莓派重启后Python模块导入失败的问题
看起来你遇到的是典型的Python环境版本不匹配或者重启后环境变量未正确加载的问题,结合你描述的“首次安装正常,重启后报错”的情况,咱们一步步排查解决:
1. 先确认Python版本与安装的模块版本匹配
这是最常见的坑——树莓派默认同时装了Python2和Python3,pip和pip3对应的是不同版本的Python包管理工具:
- 先看你运行脚本用的命令:是
python your_script.py(对应Python2)还是python3 your_script.py(对应Python3)? - 再检查安装模块时用的命令:如果是用
pip install netaddr configparser,装的是Python2的包;如果是pip3 install ...,装的是Python3的包。 - 可以用
pip --version和pip3 --version验证对应关系,比如:pip --version # 输出应该包含python2.7的路径 pip3 --version # 输出应该包含python3.5的路径
如果版本不匹配,直接用对应版本的pip重新安装:
# 如果脚本用Python2 pip install netaddr configparser # 如果脚本用Python3 pip3 install netaddr configparser
2. 检查PYTHONPATH重启后是否生效
你编辑了.bashrc但重启后失效,可能有几个原因:
- 首先在终端输入
echo $PYTHONPATH,看看输出里有没有你添加的两个site-packages目录。如果没有:- 打开
~/.bashrc确认配置正确,应该是:export PYTHONPATH="/home/pi/.local/lib/python2.7/site-packages:/home/pi/.local/lib/python3.5/site-packages:$PYTHONPATH" - 运行
source ~/.bashrc后再echo $PYTHONPATH,如果生效但重启后又没了,说明你可能用的是非交互式shell(比如开机自动运行脚本),这时候.bashrc不会被加载,需要把配置移到~/.profile或者~/.bash_profile里。
- 打开
3. 解决sudo运行脚本的环境变量问题
如果你的脚本是用sudo python ...启动的,sudo会重置所有环境变量,导致你配置的PYTHONPATH失效:
- 可以用
sudo -E python your_script.py,-E参数会保留当前用户的环境变量; - 或者把PYTHONPATH配置加到root用户的环境文件里(比如
/root/.bashrc); - 更推荐的是尽量避免用sudo运行脚本,除非你的脚本真的需要root权限(比如操作硬件)。
4. 临时应急:在脚本中手动添加路径(不推荐长期使用)
如果上面的方法都暂时没生效,可以在你的自定义脚本开头硬编码路径(但这是治标不治本的方法,换环境就会出问题):
import sys # 根据你用的Python版本添加对应路径 sys.path.append("/home/pi/.local/lib/python2.7/site-packages") # 或者sys.path.append("/home/pi/.local/lib/python3.5/site-packages")
5. 额外检查:BlackBean.py的导入语句是否对应Python版本
注意:configparser在Python2里是大写的ConfigParser,如果BlackBean.py是为Python2写的,但你用Python3运行,就会报错找不到configparser;反过来,如果是Python3的脚本用Python2运行,configparser也会出现导入问题。所以要确认BlackBean.py的代码和你运行的Python版本兼容。
内容的提问来源于stack exchange,提问作者Vince Williams
相关产品推荐
相关产品推荐

