Differences between revisions 19 and 33 (spanning 14 versions)
Revision 19 as of 2006-08-07 03:15:54
Size: 3215
Comment:
Revision 33 as of 2018-10-31 04:23:49
Size: 260
Editor: JohnsonSmi
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Introduction =
[http://matplotlib.sf.net MatPlotLib] is a module to produce nice-looking plots in Python using a wide variety of back-end packages, at least one of which is likely to be available for your system. This ability to do things in a generic fashion makes this a simple system to use, but it gets complicated if you wish to distribute an executable instead of scripts. This page describes what I had to do to make matplotlib work with py2exe.

= Special content for setup.py to use matplotlib =
{{{
#!python
# We need to import the glob module to search for all files.
import glob

# We need to exclude matplotlib backends not being used by this executable. You may find
# that you need different excludes to create a working executable with your chosen backend.
# We also need to include matplotlib.numerix.random_array
opts = {
    'py2exe': { 'includes': 'matplotlib.numerix.random_array',
                'excludes': ['_gtkagg', '_tkagg'],
                'dll_excludes': ['libgdk-win32-2.0-0.dll',
                                 'libgobject-2.0-0.dll']
              }
       }

# Additional data files are required by matplotlib. Note that the glob.glob routine
# doesn't seem to pick up the .matplotlib resource file, so I copy that separately.
# Do the same if you need to
setup(
    data_files = [(r'matplotlibdata', glob.glob(r'c:\python24\share\matplotlib\*')),
                  (r'matplotlibdata', [r'c:\python24\share\matplotlib\.matplotlibrc'])],
    name = 'demo',
    description = 'MatPlotLib Demo Program',
    console = ['demo.py']
    )
}}}

= Copying PyTZ folder =
Now copy pytz folder from C:\Python24\Lib\site-packages to your dist/ folder and you're done!


= Update for newer versions of matplotlib =
Recent versions of matplotlib (this is tested with 0.87) have changed the location where data files are found. Here is a sample setup.py that works with simple matplotlib samples. It produces massive distributions - more work needs to be done on how to exclude unused backends.

{{{
#!python
from distutils.core import setup
import py2exe

from distutils.filelist import findall
import os
import matplotlib
matplotlibdatadir = matplotlib.get_data_path()
matplotlibdata = findall(matplotlibdatadir)
matplotlibdata_files = []
for f in matplotlibdata:
    dirname = os.path.join('matplotlibdata', f[len(matplotlibdatadir)+1:])
    matplotlibdata_files.append((os.path.split(dirname)[0], [f]))


setup(
    console=['test.py'],
    options={
             'py2exe': {
                        'packages' : ['matplotlib', 'pytz'],
                       }
            },
    data_files=matplotlibdata_files
)
}}}

 
= Updating _sort confusion =

If you're using numarray and numpy together, be aware that they both have a _sort, and py2exe gets them confused. After py2exe creates the dist directotry, copy numpy/core/_sort.pyd and numarray/sort.pyd to their respective locations in the dist.

If you get an error that numarray module has no functionDict in numarraycore.py at line 176, then you'll know that py2exe confused the _sort modules that are in both numpy and numarray and need to do this step.
Hello! <<<BR>>
><<<BR>>
>
I'm Portuguese female ;=). <<<BR>>
><<<BR>>
>
I really love Gaming!<<<BR>>
><<<BR>>
>
<<<BR>>
><<<BR>>
>
Here is my blog: reliable locksmith ([[https://jacksonvillelocksmithnow.com|https://jacksonvillelocksmithnow.com]])

Hello! <
><
> I'm Portuguese female ;=). <
><
> I really love Gaming!<
><
> <
><
> Here is my blog: reliable locksmith (https://jacksonvillelocksmithnow.com)

MatPlotLib (last edited 2018-10-31 15:57:34 by JimmyRetzlaff)