Python 3.7安装smbus包时出现WinError 2错误求解决办法
错误原因
- smbus不支持Windows:smbus是Linux平台专属的I2C总线库,官方没有适配Windows的安装包,pip在Windows环境下找不到对应的可安装文件,直接抛出
[WinError 2] The system cannot find the file specified。 - Python/pip路径异常:
py -3.7可能未正确指向你的Python3.7安装目录,导致pip调用失败;或者pip版本过低,无法正确解析包的安装请求。 - 源码编译不可行:即使强制从源码编译smbus,Windows缺少I2C底层驱动和编译工具链(如Visual C++ Build Tools),编译过程会因依赖缺失中断,最终还是触发文件找不到的错误。
解决方法
换用Windows兼容的替代库
- smbus2:这是smbus的增强分支,有第三方提供的Windows预编译轮子,执行命令:
注:如果你的Windows设备没有原生I2C硬件,需要搭配USB转I2C适配器使用。py -3.7 -m pip install smbus2 - USB转I2C专用库:如果使用CH341这类USB转I2C模块,直接安装
pych341操作硬件:py -3.7 -m pip install pych341 - Adafruit Blinka:如果要兼容原有smbus代码,这个库可以在Windows上模拟Linux I2C环境,安装后直接使用smbus风格的API:
py -3.7 -m pip install adafruit-blinka
修复Python/pip路径问题
- 先验证
py -3.7是否有效:运行py -3.7 --version,如果未返回正确的Python3.7版本,就用Python3.7的绝对路径调用pip,例如:C:\Python37\python.exe -m pip install smbus2 - 升级pip到适配版本:
py -3.7 -m pip install --upgrade pip
用WSL2运行原生smbus
如果必须依赖原版smbus,就在Windows上安装WSL2(Linux子系统):
- 开启WSL2并安装Ubuntu等Linux发行版;
- 在Linux子系统内安装Python3.7和smbus:
sudo apt update && sudo apt install python3.7 python3-pip pip3 install smbus - 在WSL2中运行你的代码,即可正常使用smbus功能。
内容的提问来源于stack exchange,提问作者Seán Moran
相关产品推荐
相关产品推荐

