|
From: Benjamin R. <ben...@ou...> - 2010-11-17 18:51:10
|
On Wed, Nov 17, 2010 at 2:32 AM, Eric Emsellem <eem...@es...> wrote: > yes, it looks like this is the right file (when I look at > matplotlib.__file__) > > Now tracing which routines are run when doing this, it looks like it looks > for > projection in projections/__init__.py > after going through line 675 of figure.py > > It looks like add_subplot of plt.figure() is not compatible in my > matplotlib. > > Eric > > No, that code path is correct. The problem has to be that the registration is not occurring correctly. I would double-check that the filepath for matplotlib.__file__ and mpl_toolkits.mplot3d.__file__ matches. I am still convinced that we have an installation issue. My bet is that -- somehow -- mplot3d is being loaded from one version, while matplotlib is being loaded from another version. Another thing that might be complicating things is the use of ipython -pylab. If you aren't using pylab, then there really isn't much need to call that. Did you fully un-install matplotlib before building matplotlib from svn? If not, you might need to do a complete clean (package-wise and build-wise) before trying again. I notice that you are using OpenSUSE. We have been having a number of reports of problems from OpenSUSE users in the past month. Almost all of them appear to be packaging issues and not problems with matplotlib itself. I don't know if this is the case here, but who knows? I find this error to be fairly odd given how simple and fundamental the algorithm is. It is essentially a python dictionary containing name/class pairs. Kinda hard to break that. If you can verify that the Axes3D object is registering itself, and then the projection can't be found later, then there remains only two possibilities. First, that the dictionary being checked is different from the dictionary used to register the Axes3D class. Second, that the Axes3D entry got removed after being inserted. Considering that I am unaware of any code that deregisters a projection, I am inclined to believe that somehow we have different dictionary objects being accessed. This is the basis for my theory that the matplotlib installation is wonky because the matplotlib.pyplot that you import from your script might -- somehow -- be different from the matplotlib that is imported from mplot3d. Again, it makes little sense, but that is what is going through my mind right now. Anybody else have any thoughts? Ben Root |