TclError:Google Colab 中没有显示名称和 $DISPLAY 环境变量
Posted
技术标签:
【中文标题】TclError:Google Colab 中没有显示名称和 $DISPLAY 环境变量【英文标题】:TclError: no display name and no $DISPLAY environment variable in Google Colab 【发布时间】:2018-09-03 19:36:11 【问题描述】:这个错误:
TclError: no display name and no $DISPLAY environment variable
当我尝试在 Google Colab(协作 Jupyter 笔记本)中运行 Python 3.6 程序时出现。我在 Windows 10 机器上的 Chrome 中运行 Colab。我在 Stack Overflow 上的其他线程中看到了此错误,但在 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
【问题讨论】:
你能分享一个重现失败的示例笔记本吗? 【参考方案1】:问题在于您尝试使用的tkinter
。
Tk 通常会为您的界面创建 GUI(如新窗口)。但是 Colab 是在云中的 Web 服务器上运行的。它无法在您的机器上打开窗口。您只能通过笔记本界面与之交互。
您需要限制交互不使用 GUI。或者通过笔记本将它们更改为基于网络的。你想运行什么样的程序?
【讨论】:
如果你只需要 matplotlib 来绘制一些图形。只需删除那些 tkinter 和 python3-tk 行。这应该可以解决您的问题。 在我的应用程序中,matplotlib 绘图窗口由具有 tkinter 按钮和输入字段的 gui 控制。所以我想同时拥有 matplotlib 和 tkinter。 那么,不修改就无法在 Colab 中运行。 Colab 还支持一些表单条目和 GUI 表单。但是你需要修改代码,而且 Colab GUI 还没有教程,因为它很新。【参考方案2】:我从 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)
【讨论】:
以上是关于TclError:Google Colab 中没有显示名称和 $DISPLAY 环境变量的主要内容,如果未能解决你的问题,请参考以下文章
Google Colab 中的 Glob 函数没有提供任何输出
ImportError:colab google中没有名为object_detection.builders的模块
Google Colab:“有没有办法使用网络摄像头流式传输视频并进行处理?”
Google Colab 上的 Tensorboard 返回一个链接,但没有执行任何操作
gwpy 包给出错误 - AttributeError:模块“matplotlib.pyplot”在 Google Colab 中没有属性“FigureManagerBase”