Linux下使用PyUSB读取U盘遇权限、命令及模块缺失问题求助
解决Linux下PyUSB访问Transcend JetFlash U盘的问题
1. 处理权限错误(usb.core.USBError: [Errno 13] Access denied)
普通用户默认没有USB设备的访问权限,通过添加udev规则授权:
- 创建规则文件:
sudo nano /etc/udev/rules.d/99-transcend-jetflash.rules - 在文件中写入:
SUBSYSTEM=="usb", ATTRS{idVendor}=="8564", ATTRS{idProduct}=="1000", MODE="0666" - 保存退出后,重新加载udev规则:
sudo udevadm control --reload-rules && sudo udevadm trigger - 重新插拔U盘,普通用户即可直接访问设备,无需sudo。
2. 解决sudo找不到python指令的问题
Linux系统中python命令可能未默认指向python3,或sudo的PATH中未包含该命令:
- 直接使用
python3替代python执行脚本:sudo python3 your_script.py - 若需保留
python命令,可创建软链接(谨慎操作,避免系统依赖冲突):sudo ln -s /usr/bin/python3 /usr/bin/python
3. 解决sudo下找不到usb模块的问题
PyUSB通常安装在用户个人目录,sudo运行时使用root环境,无法读取用户安装的模块:
- 方案一:给root环境安装PyUSB:
sudo pip3 install pyusb - 方案二:使用当前用户的Python环境运行脚本,避免切换到root环境:
sudo $(which python3) your_script.py - 方案三:全局安装PyUSB(不推荐,可能影响系统依赖):
sudo pip3 install --system pyusb
内容的提问来源于stack exchange,提问作者j ton
相关产品推荐
相关产品推荐

