You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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权限运行Python
  • pythonPath:填写树莓派上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权限:

  1. 编辑sudoers文件:sudo visudo
  2. 添加一行:你的用户名 ALL=(ALL) NOPASSWD: /usr/bin/python3
  3. 按Ctrl+O保存,回车确认,再按Ctrl+X退出

内容的提问来源于stack exchange,提问作者Brad Nielsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 04:10:19