ubuntu 16.04, 安装了nvidia-docker, 一个张量流容器运行, python 2.7
我想在容器中运行一个简单的python代码。如下所示
from tkinter import *
master = Tk()
canvas_width = 80
canvas_height = 40
w = Canvas(master,
width=canvas_width,
height=canvas_height)
w.pack()
y = int(canvas_height / 2)
w.create_line(0, y, canvas_width, y, fill="#476042")
mainloop()
但是当我运行它时,会出现此错误
_tkinter.TclError:没有显示名称,没有$ DISPLAY环境变量
并根据此网站https://github.com/moby/moby/issues/8838 我将容器提交到图像,然后使用-e标志再次运行它:
-e DISPLAY =:0.0
但是出现了错误:
_tkinter.TclError:无法连接到display:0.0
我没有使用ssh登录容器。 任何人都可以给我建议吗?
答案 0 :(得分:8)
这是因为容器无法访问主机的x11套接字。所以在做docker运行时,需要包含这两个标志。
-v /tmp/.X11-unix:/tmp/.X11-unix
-e DISPLAY = unix $ DISPLAY
在此之后,我们需要做另一个操作。因为X11的默认设置只允许本地用户打印。所以我们需要将此更改为所有用户。
然后问题解决了。 ^ ^$ sudo apt-get install x11-xserver-utils
$ xhost +
答案 1 :(得分:0)
_tkinter.TclError:无法连接以显示“ localhost:0.0”
我有相同的错误消息,已解决。 (至少错误消息不见了!)
export MPLBACKEND='Agg'