如何在VS Code中调试远程Python脚本

6

我正在使用 Raspberry Pi 进行 Python 开发。我已在我的笔记本电脑上安装了 VS Code,并安装了 ssh 扩展程序。使用这个扩展程序,我可以轻松连接到 Raspberry Pi。当我连接成功后,我可以看到 VS Code 也加载了 Raspberry Pi 的 Python 解释器。我可以在 VS Code 中运行我的 Python 脚本,但当我尝试调试代码时,什么也没有发生。

是否有可能从笔记本电脑远程调试 Raspberry Pi 上的 Python 脚本?如何启用此功能?

2个回答

11
我已解决此问题。如果有人想进行远程开发和调试,请按照以下步骤操作:
  1. 在VS Code中安装远程SSH扩展
  2. 安装完成后,在VS Code左下角会出现一个绿色图标,允许我们连接到远程机器。
  3. 使用标准的SSH命令连接到远程机器。或者,您可以使用ssh-keygen生成公钥-私钥,以避免每次提示输入密码。
  4. 一旦连接到远程机器,您可以打开文件资源管理器并创建任何Python文件。保存后,它将保存在您的远程机器上。这样,您就可以使用自己的机器在另一台远程机器上远程开发代码。
  5. 对于VS Code的好处是,它选择远程机器的Python解释器,因此您在远程机器上安装的所有软件包都能与IntelliSense一起使用。
  6. 为了调试代码,我们将使用debugpy。在两个机器(远程和本地)上都安装它。
  7. 在远程机器上执行以下命令:

python3 -m debugpy --listen 1.2.3.4:5678 --wait-for-client app.py

这里的1.2.3.4是远程机器的IP地址。这将启动一个远程调试器,它将等待客户端连接。

  1. 在本地计算机上,在VS Code中打开“运行和调试”,添加“Python: Remote Attach”的配置。确保launch.json的主机名为远程机器的IP地址,端口为5678。
  2. 现在正常启动调试,您会发现代码将在第一个断点处中断,从此处您可以像在本地调试过程中一样正常继续。

说实话,这是VS Code最好的功能之一,因为大多数软件都允许您进行远程开发,但这只是普通的SSH,而远程调试可以给您更多的控制权。我正在使用Raspberry Pi上做一些Python项目,显然无法在其上安装VS Code或PyCharm。但是有了这个功能,现在我可以轻松地使用Pi的Python解释器开发并调试代码。

如果有人遇到任何问题,请告诉我。乐意帮忙。


1
为了极大地简化两台Windows机器之间的远程调试过程,使其适用于所有IDE,并避免Windows上的SSH文件权限错误,我制作了自己的Python库来解决这个问题。
只需运行pip install pywinrd并创建这两个脚本:-

Server.py

from PyWinRD.Server import WinRDServer

server = WinRDServer()
server.start()

Client.py

from PyWinRD.Client import WinRDClient

client = WinRDClient()
client.connect()

client.deploy('path/to/file/or/folder')
client.debug('path/to/python/script')
client.terminal('termninal command')

client.disconnect()

在 Windows 主机上运行 Server.py,并在您的机器上运行 Client.py,您将能够执行终端命令,在主机上部署额外的文件/文件夹,并调试任何您想要的 Python 脚本。

您正在调试的 Python 脚本的所有 stdout、stderr 调用的副本将实时重定向到您的机器上 (例如 print 和 raise 语句)。

所有的 stdin 调用只会被重定向到您的机器上 (例如 input 语句),因此服务器不会干扰它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接