TclError: нет отображаемого имени и переменной среды $DISPLAY в Windows 10 Bash

#python #matplotlib

#python #matplotlib

Вопрос:

Я попытался установить matplotlib в оболочке Windows 10 Bash.

После этого я запустил следующие строки:

 $ 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:

Официальной среды отображения для bash в Windows нет.

  • Вам необходимо установить неофициальную среду отображения, то есть xming (https://sourceforge.net/projects/xming /)
  • После установки xming вам необходимо экспортировать как DISPLAY=:0 .
  • Вам также необходимо установить qtconsole. sudo apt-get install qtconsole

Тем не менее, я не предлагаю идти этим путем, есть гораздо более простой способ использования ipython в Windows. Вы можете установить Anaconda в Windows, и вы можете использовать ipython без каких-либо проблем, подобных этому (https://www.continuum.io/downloads )

Комментарии:

1. Большое вам спасибо! После попытки с вашим предложением я выберу ваш ответ.

2. Anaconda проста в установке и использовании. После установки anaconda у вас будет ipython. Вы можете запустить ipython, либо перейдя в Start и введя ipython, либо вы можете использовать cmd и запустить ipython. В любом случае работает нормально.

3. Не могли бы вы объяснить, как я могу выполнить второй шаг?

4. В терминале bash тип DISPLAY =:0

5. Мне не нужно было выполнять третий шаг, затем для выполнения шага 2 введите export DISPLAY=:0.0 .