Error when running code on remote machine: how can I overpass this?

Hi,

I am trying to run a relatively large code, which includes some calls to and
import from pylab/matplotlib, on a remote machine: the part of the code I am
running is NOT performing any plot so there is no direct access to a display.
Unfortunately it still crashes with something like:

---> 40 cursors.MOVE : gdk.Cursor(gdk.FLEUR),
     41 cursors.HAND : gdk.Cursor(gdk.HAND2),
     42 cursors.POINTER : gdk.Cursor(gdk.LEFT_PTR),

RuntimeError: could not create GdkCursor object

when it tries to reach the display when importing pylab I guess.

I am now doing this from my laptop from a non-fixed IP and there is no easy way
for me to forward the display (loging e.g. with ssh -X), or to just isolate the
pylab part of the code (lots of files, lots of lines, etc).

I am desperately trying to run this long calculation on that remote machine (and
do it while my laptop is off, using "screen") because I need a lot of memory and
CPU.... How can I overpass this easily (just allowing for the code not to crash
with that initialisation and go on with the rest) ???

thanks for any input there

Eric

···

========
running: matplotlib version 0.98.3 Python 2.5.1 (r251:54863, Aug 1 2008,
00:35:20) via IPython 0.9.1

Eric Emsellem wrote:

Hi,

I am trying to run a relatively large code, which includes some calls to and
import from pylab/matplotlib, on a remote machine: the part of the code I am
running is NOT performing any plot so there is no direct access to a display.
Unfortunately it still crashes with something like:

---> 40 cursors.MOVE : gdk.Cursor(gdk.FLEUR),
     41 cursors.HAND : gdk.Cursor(gdk.HAND2),
     42 cursors.POINTER : gdk.Cursor(gdk.LEFT_PTR),

RuntimeError: could not create GdkCursor object

when it tries to reach the display when importing pylab I guess.

I am now doing this from my laptop from a non-fixed IP and there is no easy way
for me to forward the display (loging e.g. with ssh -X), or to just isolate the
pylab part of the code (lots of files, lots of lines, etc).

I am desperately trying to run this long calculation on that remote machine (and
do it while my laptop is off, using "screen") because I need a lot of memory and
CPU.... How can I overpass this easily (just allowing for the code not to crash
with that initialisation and go on with the rest) ???

thanks for any input there

Eric
  
Eric: That looks like the error you get from pygtk when there's no X11 running. Can you just use a non-gui backend, like plain Agg? See http://matplotlib.sourceforge.net/faq/installing_faq.html#backends for how to change the default backend.

-Jeff

···

========
running: matplotlib version 0.98.3 Python 2.5.1 (r251:54863, Aug 1 2008,
00:35:20) via IPython 0.9.1

------------------------------------------------------------------------------
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
matplotlib-users List Signup and Options
  
--
Jeffrey S. Whitaker Phone : (303)497-6313
Meteorologist FAX : (303)497-6449
NOAA/OAR/PSD R/PSD1 Email : Jeffrey.S.Whitaker@...259...
325 Broadway Office : Skaggs Research Cntr 1D-113
Boulder, CO, USA 80303-3328 Web : Jeffrey S. Whitaker: NOAA Physical Sciences Laboratory

Eric Emsellem wrote:

Hi,

I am trying to run a relatively large code, which includes some calls to and
import from pylab/matplotlib, on a remote machine: the part of the code I am
running is NOT performing any plot so there is no direct access to a display.
Unfortunately it still crashes with something like:

---> 40 cursors.MOVE : gdk.Cursor(gdk.FLEUR),
     41 cursors.HAND : gdk.Cursor(gdk.HAND2),
     42 cursors.POINTER : gdk.Cursor(gdk.LEFT_PTR),

RuntimeError: could not create GdkCursor object

when it tries to reach the display when importing pylab I guess.

I am now doing this from my laptop from a non-fixed IP and there is no easy way
for me to forward the display (loging e.g. with ssh -X), or to just isolate the
pylab part of the code (lots of files, lots of lines, etc).

I am desperately trying to run this long calculation on that remote machine (and
do it while my laptop is off, using "screen") because I need a lot of memory and
CPU.... How can I overpass this easily (just allowing for the code not to crash
with that initialisation and go on with the rest) ???

Eric,

You need to set a non-interactive backend, typically agg. The method depends on exactly what you are doing and what your constraints are. The easiest may be to put a matplotlibrc file in the directory from which you are starting your ipython session, or running your script. All it needs to contain is the single line:

backend : Agg

Alternatively, any script can start with

import matplotlib
matplotlib.use('agg')

This has to come before pylab is imported.

Eric

···

thanks for any input there

Eric

running: matplotlib version 0.98.3 Python 2.5.1 (r251:54863, Aug 1 2008,
00:35:20) via IPython 0.9.1

------------------------------------------------------------------------------
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
matplotlib-users List Signup and Options