TclError:Windows 10 Bash上没有显示名称和$ DISPLAY环境变量

时间:2016-10-01 08:06:40

标签: python matplotlib

我尝试在Windows 10 Bash shell上安装matplotlib。

之后,我跑了以下几行:

$ ipython3

然后

In[1]: %pylab

然后它给了我一个跟随错误:

---------------------------------------------------------------------------
TclError                                  Traceback (most recent call last)
<ipython-input-1-4ab7ec3413a5> in <module>()
----> 1 get_ipython().magic('pylab')

/usr/lib/python3/dist-packages/IPython/core/interactiveshell.py in magic(self, arg_s)
   2164         magic_name, _, magic_arg_s = arg_s.partition(' ')
   2165         magic_name = magic_name.lstrip(prefilter.ESC_MAGIC)
-> 2166         return self.run_line_magic(magic_name, magic_arg_s)
   2167
   2168     #-------------------------------------------------------------------------

/usr/lib/python3/dist-packages/IPython/core/interactiveshell.py in run_line_magic(self, magic_name, line)
   2085                 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
   2086             with self.builtin_trap:
-> 2087                 result = fn(*args,**kwargs)
   2088             return result
   2089

/usr/lib/python3/dist-packages/IPython/core/magics/pylab.py in pylab(self, line)

/usr/lib/python3/dist-packages/IPython/core/magic.py in <lambda>(f, *a, **k)
    190     # but it's overkill for just that one bit of state.
    191     def magic_deco(arg):
--> 192         call = lambda f, *a, **k: f(*a, **k)
    193
    194         if isinstance(arg, collections.Callable):

/usr/lib/python3/dist-packages/IPython/core/magics/pylab.py in pylab(self, line)
    129             import_all = not args.no_import_all
    130
--> 131         gui, backend, clobbered = self.shell.enable_pylab(args.gui, import_all=import_all)
    132         self._show_matplotlib_backend(args.gui, backend)
    133         print ("Populating the interactive namespace from numpy and matplotlib")

/usr/lib/python3/dist-packages/IPython/core/interactiveshell.py in enable_pylab(self, gui, import_all, welcome_message)
   2918         from IPython.core.pylabtools import import_pylab
   2919
-> 2920         gui, backend = self.enable_matplotlib(gui)
   2921
   2922         # We want to prevent the loading of pylab to pollute the user's

/usr/lib/python3/dist-packages/IPython/core/interactiveshell.py in enable_matplotlib(self, gui)
   2879                 gui, backend = pt.find_gui_and_backend(self.pylab_gui_select)
   2880
-> 2881         pt.activate_matplotlib(backend)
   2882         pt.configure_inline_support(self, backend)
   2883

/usr/lib/python3/dist-packages/IPython/core/pylabtools.py in activate_matplotlib(backend)
    244     matplotlib.rcParams['backend'] = backend
    245
--> 246     import matplotlib.pyplot
    247     matplotlib.pyplot.switch_backend(backend)
    248

/usr/local/lib/python3.4/dist-packages/matplotlib/pyplot.py in <module>()
   2510 # are no-ops and the registered function respect `mpl.is_interactive()`
   2511 # to determine if they should trigger a draw.
-> 2512 install_repl_displayhook()
   2513
   2514 ################# REMAINING CONTENT GENERATED BY boilerplate.py ##############

/usr/local/lib/python3.4/dist-packages/matplotlib/pyplot.py in install_repl_displayhook()
    163             ipython_gui_name = backend2gui.get(get_backend())
    164             if ipython_gui_name:
--> 165                 ip.enable_gui(ipython_gui_name)
    166         else:
    167             _INSTALL_FIG_OBSERVER = True

/usr/lib/python3/dist-packages/IPython/terminal/interactiveshell.py in enable_gui(gui, app)
    306         from IPython.lib.inputhook import enable_gui as real_enable_gui
    307         try:
--> 308             return real_enable_gui(gui, app)
    309         except ValueError as e:
    310             raise UsageError("%s" % e)

/usr/lib/python3/dist-packages/IPython/lib/inputhook.py in enable_gui(gui, app)
    526         e = "Invalid GUI request %r, valid ones are:%s" % (gui, list(guis.keys()))
    527         raise ValueError(e)
--> 528     return gui_hook(app)
    529

/usr/lib/python3/dist-packages/IPython/lib/inputhook.py in enable_tk(self, app)
    322         if app is None:
    323             import tkinter
--> 324             app = tkinter.Tk()
    325             app.withdraw()
    326             self._apps[GUI_TK] = app

/usr/lib/python3.4/tkinter/__init__.py in __init__(self, screenName, baseName, className, useTk, sync, use)
   1852                 baseName = baseName + ext
   1853         interactive = 0
-> 1854         self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
   1855         if useTk:
   1856             self._loadtk()

TclError: no display name and no $DISPLAY environment variable

如果有人能指出如何删除此错误,我会感激不尽。谢谢。

1 个答案:

答案 0 :(得分:9)

Windows上没有正式的bash显示环境。

  • 您需要安装非官方的展示环境,即xming(https://sourceforge.net/projects/xming/
  • 安装xming后,您需要导出为 DISPLAY =:0
  • 您还需要安装qtconsole。 sudo apt-get install qtconsole

但是,我不建议这样做,在Windows上使用ipython有一种更简单的方法。你可以在Windows上安装Anaconda,你可以使用ipython而不会出现这样的问题(https://www.continuum.io/downloads