本地Python代码远程运行与调试的可行性咨询
当然可以实现!你想要本地编辑代码,却借助远程更强大的机器来运行和调试的需求完全能达成,不用把代码拷贝到远程机器上。下面就给你详细拆解基于debugpy的实现方案:
第一步:在远程机器上部署debugpy并启动监听
先在远程机器上安装debugpy,执行命令:pip install debugpy接着启动debugpy的调试监听服务,让它等待本地调试器的连接:
python -m debugpy --listen 0.0.0.0:5678 --wait-for-client这里解释下参数:
0.0.0.0允许远程机器接收来自任意IP的连接,5678是监听的端口(你可以改成其他未被占用的端口),--wait-for-client表示会暂停执行,直到本地调试器连接上来再继续。第二步:配置本地VS Code的调试环境
打开本地存放代码的VS Code工作区,找到.vscode文件夹(如果没有就新建一个),创建或修改launch.json文件,填入以下配置:{ "version": "0.2.0", "configurations": [ { "name": "Remote Debug via debugpy", "type": "python", "request": "attach", "connect": { "host": "你的远程机器IP地址", "port": 5678 }, "pathMappings": [ { "localRoot": "${workspaceFolder}", "remoteRoot": "/tmp/remote-debug-mapping" } ], "justMyCode": true } ] }重点说下
pathMappings:这里是把本地代码的根目录(${workspaceFolder})映射到远程机器的一个临时路径(比如/tmp/remote-debug-mapping),这个路径不需要真的存在代码文件,只是用来让debugpy建立本地代码和远程执行环境的关联,这样远程机器就能识别本地代码的断点位置了。第三步:启动调试流程
- 确保远程机器上的debugpy监听命令已经在运行
- 在本地VS Code的调试面板里,选择刚才配置的
Remote Debug via debugpy选项,点击启动按钮 - 现在你就可以像本地调试一样操作了:给代码加断点、单步执行、查看变量,所有的运行逻辑都是在远程机器上完成的,而你编辑的本地代码会实时通过调试通道传递给远程执行,完全不需要把代码拷贝到远程机器。
额外的安全小技巧
如果不想直接开放远程机器的5678端口给外部网络,可以用SSH端口转发来加密连接:
在本地终端执行:ssh -L 5678:localhost:5678 远程机器用户名@远程机器IP之后把VS Code的
launch.json里的host改成localhost,这样本地连localhost:5678就相当于通过SSH隧道连接到远程机器的5678端口,更安全。
备注:内容来源于stack exchange,提问作者Marc




