此错误:
TclError: no display name and no $DISPLAY environment variable
当我试图在google的新colab工具(协作Jupyter笔记本)中运行Python 3.6程序时出现。我在Windows 10计算机上运行Chrome浏览器。我已经看到在stackoverflow上的其他线程中报告此错误,但在colab的上下文中没有报告,并且以前发布的解决方案要么不适用,要么似乎不起作用。我的代码开头是这样的:
from matplotlib.pyplot import *
from matplotlib.widgets import *
from math import *
from random import *
from numpy import *
from tkinter import *
请注意,要使tkinter导入工作,我必须在另一个Colab单元格中发出以下指令:
!apt-get install python3-tk
答案 0 :(得分:3)
我从 Reddit 上的另一篇文章中发现,您可以创建一个虚拟显示器。以下实际上适用于我的 Colab 笔记本。
### CREATE VIRTUAL DISPLAY ###
!apt-get install -y xvfb # Install X Virtual Frame Buffer
import os
os.system('Xvfb :1 -screen 0 1600x1200x16 &') # create virtual display with size 1600x1200 and 16 bit color. Color can be changed to 24 or 8
os.environ['DISPLAY']=':1.0' # tell X clients to use our virtual DISPLAY :1.0.
在我的特定情况下,我需要可视化一棵 NLTK 树,因此我必须遵循以下附加步骤。
%matplotlib inline
### INSTALL GHOSTSCRIPT (Required to display NLTK trees) ###
!apt install ghostscript python3-tk
chunked_sentence = '(S (NP this tree) (VP (V is) (AdjP pretty)))'
from nltk.tree import Tree
from IPython.display import display
tree = Tree.fromstring(str(chunked_sentence))
display(tree)
答案 1 :(得分:2)
问题在于您尝试使用的tkinter
。
Tk通常会为您的界面创建GUI(如新窗口)。但是Colab在云中的Web服务器上运行。它无法打开您机器上的窗口。您只能通过笔记本界面与它进行交互。
您需要限制交互不使用GUI。或者通过笔记本将它们更改为基于网络。你想尝试什么样的程序?
答案 2 :(得分:0)
您可以使用Repl.it代替Jupyter
编辑:我尝试了此操作,但效果不佳。 Repl.it在服务器上执行动画,但仅将最后帧发送到浏览器。