使用VSCode通过SSH在树莓派编写Python代码时遇权限错误
解决VSCode SSH远程调试树莓派HiWonder MasterPi的权限问题与调试服务器连接失败
问题本质
/dev/mem 是树莓派的系统内存设备文件,只有root用户拥有读写权限,HiWonder库需要操作硬件寄存器,因此必须以sudo权限运行。VNC环境下直接sudo执行代码没问题,但VSCode远程调试默认用普通用户启动,触发权限错误;而调试服务器连接失败,是因为sudo环境下缺少调试依赖,或者launch.json配置不符合要求。
一步步解决
1. 给root环境安装调试依赖
VSCode的Python调试依赖pydevd-pycharm包,普通用户安装的包sudo环境可能无法访问,所以用root权限重新安装:
sudo pip3 install pydevd-pycharm
2. 配置正确的launch.json
替换你现有的launch.json内容,核心是让VSCode以sudo权限启动Python:
{ "version": "0.2.0", "configurations": [ { "name": "Python: Sudo Remote Debug", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "sudo": true, "env": { "PYTHONPATH": "${workspaceFolder}" }, "pythonPath": "/usr/bin/python3" } ] }
"sudo": true:强制VSCode用sudo权限运行PythonpythonPath:填写树莓派上Python3的实际路径,可通过which python3命令查询console:指定用集成终端运行,方便查看输出和输入sudo密码
3. 搞懂调试服务器
调试服务器就是VSCode在树莓派上启动的后台服务(即我们安装的pydevd),负责和本地VSCode通信,传递调试指令(断点、步进)和程序输出。之前连接失败的原因无非两点:
- 普通用户安装的pydevd,sudo运行时找不到该依赖包
- launch.json未配置sudo,导致调试服务器未以root权限启动
4. 验证配置效果
保存launch.json后,打开你的Python代码文件按F5启动调试:
- 集成终端会提示输入树莓派的sudo密码(未设置免密sudo的情况下)
- 此时程序以root权限运行,不会再出现
Permission error: /dev/mem错误 - 断点、变量查看等调试功能可正常使用
可选优化:设置免密sudo
如果不想每次调试都输入密码,可给当前用户配置免密sudo权限:
- 编辑sudoers文件:
sudo visudo - 添加一行:
你的用户名 ALL=(ALL) NOPASSWD: /usr/bin/python3 - 按Ctrl+O保存,回车确认,再按Ctrl+X退出
内容的提问来源于stack exchange,提问作者Brad Nielsen
相关产品推荐
相关产品推荐

