docker _tkinter.TclError:无法连接到显示器

x33g5p2x  于 2023-04-11  发布在  Docker
关注(0)|答案(2)|浏览(160)

ubuntu 16.04,nvidia-docker安装,tensorflow容器运行,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:无法连接到显示器:0.0
我没有使用ssh登录容器。有人能给予我一些建议吗?

ttisahbt

ttisahbt1#

这是因为容器无法访问主机的x11套接字。所以在运行docker时,需要包含这两个标志。

-v /tmp/.X11-unix:/tmp/.X11-unix
-e DISPLAY=unix$DISPLAY

在此之后,我们需要做另一个操作。因为X11的默认设置只允许本地用户打印。所以我们需要将此更改为所有用户。

$ sudo apt-get install x11-xserver-utils
$ xhost +

问题就解决了。

eivgtgni

eivgtgni2#

_tkinter.TclError:无法连接以显示“localhost:0.0”
我有相同的错误信息,解决了。(至少错误信息消失了!)

export MPLBACKEND='Agg'

相关问题