Hi,

I'm sending a little module I use to force a particular version of matplotlib and backend in my library.

This is imported in my package __init__.py to make sure the environment is sane. It can also be imported in the beginning of the app to set up a sane environment, which may be necessary if the app uses matplotlib outside my library.

I don't think there is anything we can do within matplotlib to address the version requirements.

The backend check could be a little easier if we modify matplotlib.use () to be silent if the backend is already in use, or raise an error if it isn't. ImportError seems appropriate, since use() is kind of like an import. Calling switch_backend() is another option.

  - Paul

# This program is public domain
"""
Configure plotter for plottools.

This must be imported first in __init__.py for plottools.

If your application uses matplotlib outside plottools, then
please do the following at the start of your application:

    # Select matplotlib version and backend
    import danse.common.plottools.config

Note that plottools requires particular versions of matplotlib
and a particular backend.  As of this writing it is the WXAgg
backend for matplotlib>=0.98.

The plottools package uses pkg_resources if available to select
the correct version of matplotlib.  If you need multiple matplotlib
versions in your path, be sure to use "easy_install -m" for all
of them.  If a version is installed without "-m" that does not
meet the requirements, then pkg_resources.require() will fail,
even if you have installed a suitable version with "-m".  In this
case you will need to fix up your site-packages directory,
probably by removing site-packages/matplotlib and the associated
egg file for that version, and reinstalling with "-m".  You may
also need to edit site-packages/easy-install.pth.
"""
import sys

__all__ = []

plot_version="0.98"
plot_backend="WXAgg"

# Sort out matplotlib version
try:
    import pkg_resources
    pkg_resources.require("matplotlib>="+plot_version)
except ImportError:
    import matplotlib
    from distutils.version import StrictVersion as Version
    if Version(matplotlib.__version__) < Version(plot_version):
        raise ImportError("Matplotlib version must be %s or newer"%(plot_version,))

# Sort out matplotlib backend
import matplotlib
if 'matplotlib.backends' not in sys.modules:
    # if no backend yet, be sure to use the correct one
    matplotlib.use(plot_backend)
elif matplotlib.get_backend() != plot_backend:
    # if a backend has already been selected, make sure it is the correct one.
    raise ImportError("Matplotlib not using backend "+plot_backend)

------------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It is the best place to buy or sell services for
just about anything Open Source.
http://p.sf.net/sfu/Xq1LFB
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to