![](/img/trans.png)
[英]docker/matplotlib: RuntimeError: Invalid DISPLAY variable
[英]How do I connect via SSH to docker image without “Invalid DISPLAY variable”-error by matplotlib when local docker session works fine?
我在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服务器转发到docker。
此解决方案是一种解决方法,需要具有活动X服务器的登录用户。 这不是最佳的。
假设在SSH连接期间缺少DISPLAY。 要将其用于matplotlib,我们必须执行以下操作:
ssh登录后,在主机系统“计算机”上输入连接到docker映像之前的以下命令。
export DISPLAY=:1
这可能取决于您的计算机设置,只要您与当前用户一起运行X-Server,就可能必须将echo $DISPLAY
的输出而不是1
作为输出。 只要提供相同的用户名,它就应该起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.