On Monday 15 January 2007 12:16 am, Steve Chaplin wrote:
> On Thu, 2007-01-11 at 00:01 -0700, Fernando Perez wrote:
> > On 1/10/07, Steve Chaplin <[EMAIL PROTECTED]> wrote:
> > > On Mon, 2007-01-08 at 11:24 -0500, Darren Dale wrote:
> > > > I had to alter the following lines from backend_gtkcairo, from
> > > >
> > > > import matplotlib.backends.backend_cairo as be_cairo
> > > > from   matplotlib.backends.backend_gtk import *
> > > >
> > > > to
> > > >
> > > > import backend_cairo as be_cairo
> > > > from   backend_gtk import *
> > > >
> > > > in order to prevent the following traceback:
> > > >
> > > > Traceback (most recent call last):
> > > >   File "/usr/bin/ipython", line 27, in ?
> > > >     IPython.Shell.start().mainloop()
> > > >   File "/usr/lib64/python2.4/site-packages/IPython/Shell.py", line
> > > > 1034, in start
> > > >     return shell(user_ns = user_ns)
> > > >   File "/usr/lib64/python2.4/site-packages/IPython/Shell.py", line
> > > > 945, in __init__
> > > >     shell_class=MatplotlibMTShell)
> > > >   File "/usr/lib64/python2.4/site-packages/IPython/Shell.py", line
> > > > 622, in __init__
> > > >     on_kill=[mainquit])
> > > >   File "/usr/lib64/python2.4/site-packages/IPython/ipmaker.py", line
> > > > 90, in make_IPython
> > > >     embedded=embedded,**kw)
> > > >   File "/usr/lib64/python2.4/site-packages/IPython/Shell.py", line
> > > > 506, in __init__
> > > >     user_ns,b2 = self._matplotlib_config(name,user_ns)
> > > >   File "/usr/lib64/python2.4/site-packages/IPython/Shell.py", line
> > > > 397, in _matplotlib_config
> > > >     from matplotlib import backends
> > > >   File
> > > > "/usr/lib64/python2.4/site-packages/matplotlib/backends/__init__.py",
> > > > line 55, in ?
> > > >     new_figure_manager, draw_if_interactive, show = pylab_setup()
> > > >   File
> > > > "/usr/lib64/python2.4/site-packages/matplotlib/backends/__init__.py",
> > > > line 23, in pylab_setup
> > > >     globals(),locals(),[backend_name])
> > > >
> > > > File
> > > > "/usr/lib64/python2.4/site-packages/matplotlib/backends/backend_gtkca
> > > >iro.py", line 11, in ?
> > > >     import matplotlib.backends.backend_cairo as be_cairo
> > > > AttributeError: 'module' object has no attribute 'backends'
> > >
> > > The original matplotlib code is correct, you should be editing IPython
> > > and correcting their bug!
> >
> > Well, I'd be delighted to correct the ipython bug, if only I
> > understood exactly what the problem was...  As far as I can see, that
> > code in ipython is simply calling
> >
> >         # Initialize matplotlib to interactive mode always
> >         import matplotlib
> >         from matplotlib import backends
> >
> > inside a function (the _matplotlib_config method).  I don't see a bug
> > in that, but if you provide some pointers, I'll be happy to fix any
> > issues that are on ipython's side of the fence.
>
> Darren reported a "bug" in backend_gtkcairo.py which he has "fixed". My
> view is that the lines
> from matplotlib.backends import backend_cairo
> from matplotlib.backends.backend_gtk import *
> work fine when called from the Python prompt. They are using the
> absolute package path and are correct and should not be "fixed" to use
> relative imports (which is bad style). So if there is a bug it is
> elsewhere and from the traceback it looked like ipython is involved.
>
> The traceback shows that this code is being executed
> # a hack to keep old versions of ipython working with mpl
> if 'IPython.Shell' in  sys.modules:
>     new_figure_manager, draw_if_interactive, show = pylab_setup()
>
> which is ipython-specific code.
> I don't usually use IPython, but I installed it today and ran a few
> simple matplotlib plots with the GTKCairo backend and they worked OK! So
> I can't offer more info, perhaps Darren can produce a minimal test case
> to isolate the problem.

They work ok now, after changing the import statement so that it doesnt rename 
backend_cairo to be_cairo in the gtkcairo namespace. I can't think of a more 
minimal example than the one I already provided: starting IPython without the 
pylab flag and importing matplotlib.backends.backend_gtkcairo. I looked at 
this for a couple hours last week, and was not able to determine whether it 
was an IPython bug or a matplotlib bug that is exposed by IPython's magic. I 
do agree that the absolute path imports are correct and are not the source of 
the problem. Since a workaround has been committed, I don't think I should 
spend more time on this issue (unless another problem emerges).

Darren

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to