当我通过远程 ssh 使用 vscode 时,如何在调试控制台中可视化图像

sey*_*eet 5 remote-debugging python-3.x x11-forwarding vscode-debugger vscode-remote

我正在使用vscode 远程 ssh并通过 ssh 连接到我的服务器(集群中的节点)。我的本地机器是Windows,我的主机是ubuntu。我的 vscode 正在使用 python 进行编码。

我尝试了几周的时间来运行 python 代码并在调试控制台中显示图像,就像我们在普通终端或 jupyter 笔记本中所做的那样,但我注意到我根本无法在调试控制台中显示图像。这是一个玩具示例

import numpy as np
import matplotlib.pyplot as plt
img =  np.random.rand(300,200)
plt.imshow(img);plt.show()
Run Code Online (Sandbox Code Playgroud)

基本上,当我尝试在调试控制台中执行操作时,plt.imshow(img);plt.show()我要么什么也得不到,要么得到qt.qpa.screen: QXcbConnection: Could not connect to display localhost:0.0 Could not connect to any X display.。我尝试了几种方法,例如使用 x11 extenson 或在 putty 中添加 x11 转发或在launch.json. 然而,它们都不起作用。

我得出的结论是,vscode 远程 ssh 和 python 中的调试控制台还没有该功能。但如果您知道一种方法,请告诉我。

我希望我清楚在正常情况下显示图像是有效的,而在调试情况下则不起作用。请注意,当我进行调试时,我不想在调试控制台之外显示图像。

谢谢

小智 2

看来您已经完成了我提出的解决方案的第一步。

  1. 使用 ctrl+ 打开 vscode 中的设置,然后搜索terminal.integrated.env.linux. 单击 Edid settings.json
  2. 更新terminal.integrated.env.linux到此
"terminal.integrated.env.linux": {
    "DISPLAY": "localhost:10.0",
  }
Run Code Online (Sandbox Code Playgroud)
  1. 关闭vscode
  2. 打开与服务器的 ssh 连接ssh -X user@host
  3. 像往常一样打开 vscode 并使用远程开发插件。

现在,这将无限期地起作用,只需每次打开侧面的 x11-forwarding 即可。我目前正在寻找解决方案的缺点是,"DISPLAY": "localhost:10.0"每次您希望在本地开发时都需要删除,这不是最佳的。

编辑:由于您显然使用的是 Windows,因此您需要使用 X11 转发配置 putty,并使用 xming 或其他 x11 转发软件代替我的步骤 4。