codingknob
codingknob

Reputation: 11680

ipython --pylab on cygwin: TclError: no display name and no $DISPLAY environment variable

I recently installed ipython as per instructions here: http://ardiyu07.blogspot.com/2012/04/ipython-012-installation-in-cygwin.html.

When I run 'ipython --pylab' I get the error message below. I have googled around and have found postings about this error but in different context. Mine occurs when I launch ipython with the --pylab argument. I know this has something to do with the matplotlib gui interaction but not sure what exactly. I appreciate the guidance.

$ ipython --pylab
Python 2.7.3 (default, Dec 18 2012, 13:50:09)
Type "copyright", "credits" or "license" for more information.

IPython 0.13.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

Welcome to pylab, a matplotlib-based Python environment [backend: TkAgg].
For more information, type 'help(pylab)'.
[TerminalIPythonApp] GUI event loop or pylab initialization failed
---------------------------------------------------------------------------
TclError                                  Traceback (most recent call last)
/usr/lib/python2.7/site-packages/IPython/core/interactiveshell.pyc in enable_pylab(self, gui, import_all)
   2780         # Now we must activate the gui pylab wants to use, and fix %run to take
   2781         # plot updates into account
-> 2782         self.enable_gui(gui)
   2783         self.magics_manager.registry['ExecutionMagics'].default_runner = \
   2784         mpl_runner(self.safe_execfile)

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

/usr/lib/python2.7/site-packages/IPython/lib/inputhook.pyc 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/python2.7/lib-tk/Tkinter.pyc in __init__(self, screenName, baseName, className, useTk, sync, use)
   1683                 baseName = baseName + ext
   1684         interactive = 0
-> 1685         self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
   1686         if useTk:
   1687             self._loadtk()

TclError: no display name and no $DISPLAY environment variable

Upvotes: 4

Views: 5041

Answers (1)

seumas
seumas

Reputation: 512

Type startxwin into the cygwin terminal ( you will need the X11 libraries available from the cygwin setup.exe ) You can then run ipython --pylab from the new terminal window and a command like plot(range(10)) which will open a new window but you will need to also call plt.draw() for the plot to appear unlike in native pylab, the control over windows for the plots in cygwin is also poor compared to native pylab.

I didn't need to edit any setup files in this process, you may need to 'pip uninstall matplotlib' and reinstall until you have the required libraries installed via the cygwin setup.exe ( tkinter and I believe X11-devel libraries are required ).

Get setuptools via ez_setup.py

wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py
easy_install pip 
pip install numpy 
pip install ipython
pip install matplotlib

Upvotes: 1

Related Questions