【发布时间】:2019-04-10 23:43:08
【问题描述】:
我在我的 Ubuntu 18.04 linux 机器上运行/托管了一个完整工作的 docker-image。但是,通过 PowerShell 从我的 Win10 笔记本电脑通过 SSH 连接到物理机:
ssh username@machine
当我尝试通过 ssh 远程执行我的代码时,我确实从 matplotlib 收到以下错误:
Traceback (most recent call last):
File "foo", line 284, in <module>
cnnTrainTestApply.applyStructureDetectionNet(absPathToCsvFiles, absPathToCnnOutputFiles)
File "/home/dev/foo.py", line 702, in bar
plt.figure(figsize=(15, 15))
File "/opt/conda/lib/python3.5/site-packages/matplotlib/pyplot.py", line 539, in figure
**kwargs)
File "/opt/conda/lib/python3.5/site-packages/matplotlib/backend_bases.py", line 171, in new_figure_manager
return cls.new_figure_manager_given_figure(num, fig)
File "/opt/conda/lib/python3.5/site-packages/matplotlib/backend_bases.py", line 177, in new_figure_manager_given_figure
canvas = cls.FigureCanvas(figure)
File "/opt/conda/lib/python3.5/site-packages/matplotlib/backends/backend_qt5agg.py", line 35, in __init__
super(FigureCanvasQTAggBase, self).__init__(figure=figure)
File "/opt/conda/lib/python3.5/site-packages/matplotlib/backends/backend_qt5.py", line 235, in __init__
_create_qApp()
File "/opt/conda/lib/python3.5/site-packages/matplotlib/backends/backend_qt5.py", line 122, in _create_qApp
raise RuntimeError('Invalid DISPLAY variable')
RuntimeError: Invalid DISPLAY variable
无论是这个还是ssh -X username@machine 都不会成功。在没有 ssh 的情况下直接在我的机器上工作不会产生任何问题。我想这是缺少运行的 XServer 或类似的东西。
我对 ssh 连接有什么误解?我该如何解决这个问题?
由于 matplotlib 需要正常运行的 qt5 后端,我不能简单地避免将主机系统的 X-server 转发到 docker。
【问题讨论】:
-
这不是那个问题的重复。因为我的问题不在于将 X11 转发给 docker,所以效果很好。这是关于不在运行 docker 的主机上运行 X-Server。当没有东西可以转发时,你不能转发。谢谢你的链接!它提供了一些见解。更具体地说,docker 使用的 qt5 后端需要运行 Xserver。目前还不能绕过 X-Server 转发。
标签: python docker matplotlib ssh