[SciPy-dev] Python (Enthought Edition) for Windows test release

Fernando Perez Fernando.Perez at colorado.edu
Fri Jan 21 01:52:59 CST 2005


John Hunter wrote:

>     Joe> - matplotlib
> 
> Hi Joe -- excellent work.  I recommend one important change to the
> matplotlib configuration file .matplotlibrc (which resides in the same
> directory as setup.py and ultimately gets placed in
> C:\Python23\share\.matplotlibrc.  The default backend in the src
> tarball which you used is GTKAgg, which doesn't work in the default
> enthon install because pygtk is not available.  I suggest changing
> this to either TkAgg or WXAgg.  Since most of the enthon tools default
> to wx, perhaps WXAgg is the natural choice.  Eg, the line in
> .matplotlibrc should read
> 
> backend      : WXAgg    # the default backend
> 
> I tested enthon matplotlib with tkagg, wxagg and ran my suite of
> example figure drivers for the image backends (PNG/PS/SVG) and it
> passed with flying colors.

Just curious: did you test this from a normal terminal or from ipython -pylab? 
  I ask because I was just trying to help a colleague get going with Enthon, 
and starting ipython -pylab with the WXAgg backend gave me a nasty ipython 
crash, related to signal handling.  Unfortunately I didn't have time to 
investigate, since I was supposed to help him with other things.  I just set 
the default backend to TkAgg and moved on.

The error, as far as I remember, was a SystemError exception when attempting 
to install a SIGINT handler by runcode.  In Shell.py:

     def runcode(self):
         """Execute a code object.

         Multithreaded wrapper around IPython's runcode()."""

         # lock thread-protected stuff
         self.ready.acquire()

         # Install sigint handler
         signal.signal(signal.SIGINT, sigint_handler)

this works just fine under Linux (though it's an unpleasant hack), but 
apparently it breaks something in Windows.  I know signal handling is not a 
cross-platform-frienly problem...  If this really breaks things for windows 
users, I'd appreciate if someone could test (keeping the WXAgg backend), 
changing the above to:

         # Install sigint handler
         try:
             signal.signal(signal.SIGINT, sigint_handler)
         except SystemError:
             pass

If that helps, then we can use this for protecting windows users so they can 
use ipython/pylab with WX, which is probably the preferred combination for 
Windows users (native widgets and all).

Sorry to offload debugging on others, but I have nowhere to test this, and I'm 
just working from memory from the traceback I saw fly by on my friend's screen.

Regards,

f




More information about the Scipy-dev mailing list