Ok, I know what the problem is. I was using a sample setup.py posted by Stef and in his setup, he created a "mpl-data" subdirectory under "dist" to store all of the data files use by matplotlib. That's why matplotlib couldn't find it without a set statement. After changing the name to "matplotlibdata", everything works.
I also made changes to every one of the matplotlibrc file I found in the installed copy of matplotlib to invoke WXAgg - instead of TkAgg. So for completeless, may be this will benefit other matplotlib users, here's my py2exe script - tested using python 2.3, latest wxpython and so forth. Let say you wish to create an exe of the sample multicolor.py program. Place multicolor.py in a test\multicolor directory, and a copy of the following script, have py2exe installed, and then just run it. You will end up with a dist subdirectory under test\multicolor and that's where you'll find multicolor.exe. #==================== Kill_Distro = True MatPlotLib_Wanted = True def File_Exists( path ): res=os.path.isdir(path) if res==True: return res return os.path.isfile(path) from distutils.core import setup import py2exe import sys import os import shutil import glob homedir= r"E:\test\Matplotlib\multicolor" python = r"c:\Python25" # Name of python directory if File_Exists(python)==False: python = r"c:\Python23" # Name of python directory # *********************************************************************** # Some suggests that old build/dist should be cleared # *********************************************************************** dist_paths = [ homedir+'\\build', homedir+'\\dist' ] for path in dist_paths : if File_Exists ( path ) : shutil.rmtree ( path ) # *********************************************************************** # *********************************************************************** # *********************************************************************** data_files = [] packages = [] includes = [] excludes = [] dll_excludes = [] data_files.append ( ( '', glob.glob ( 'templates_*.*' ) ) ) # *********************************************************************** # For MatPlotLib # *********************************************************************** if MatPlotLib_Wanted : import matplotlib includes.append ( 'matplotlib.numerix.random_array' ) packages.append ( 'matplotlib' ) packages.append ( 'pytz' ) def mpl_data_files(destpath, path): mpl_data=[] for x in glob.glob (path+'\\*.*' ): if os.path.isdir(x): mpl_data_files(destpath+'\\'+os.path.split(x)[1], x) elif os.path.isfile(x): mpl_data.append(x) data_files.append ( ( destpath, mpl_data)) mpl_data_files(r'matplotlibdata', python+r'\Lib\site-packages\matplotlib\mpl-data') data_files.append ( ( r'matplotlibdata', glob.glob ( python+r'\Lib\site-packages\matplotlib\mpl-data\matplotlibrc' ))) data_files.append ( ( r'matplotlibdata\images', glob.glob ( python+r'\Lib\site-packages\matplotlib\mpl-data\images\*.*' ))) data_files.append ( ( r'matplotlibdata\fonts\afm', glob.glob ( python+r'\Lib\site-packages\matplotlib\mpl-data\fonts\afm\*.*' ))) data_files.append ( ( r'matplotlibdata\fonts\pdfcorefonts', glob.glob ( python+r'\Lib\site-packages\matplotlib\mpl-data\fonts\pdfcorefonts\*.*'))) data_files.append ( ( r'matplotlibdata\fonts\ttf', glob.glob ( python+r'\Lib\site-packages\matplotlib\mpl-data\fonts\ttf\*.*' ))) excludes.append ( '_gtkagg') excludes.append ( '_tkagg' ) excludes.append ( '_agg2' ) excludes.append ( '_cairo' ) excludes.append ( '_cocoaagg' ) excludes.append ( '_fltkagg' ) excludes.append ( '_gtk' ) excludes.append ( '_gtkcairo') excludes.append ( 'backend_qt' ) excludes.append ( 'backend_qt4') excludes.append ( 'backend_qt4agg' ) excludes.append ( 'backend_qtagg' ) excludes.append ( 'backend_cairo' ) excludes.append ( 'backend_cocoaagg' ) excludes.append ( 'Tkconstants' ) excludes.append ( 'Tkinter' ) excludes.append ( 'tcl' ) excludes.append ( "_imagingtk" ) excludes.append ( "PIL._imagingtk" ) excludes.append ( "ImageTk" ) excludes.append ( "PIL.ImageTk" ) excludes.append ( "FixTk" ) dll_excludes.append ( 'libgdk-win32-2.0-0.dll' ) dll_excludes.append ( 'libgdk_pixbuf-2.0-0.dll' ) dll_excludes.append ( 'libgobject-2.0-0.dll') dll_excludes.append ( 'tcl84.dll' ) dll_excludes.append ( 'tk84.dll' ) dll_excludes.append ( 'tclpip84.dll' ) # *********************************************************************** # seems not to be found (imported in brick.py) #includes.append ( 'PyLab_Works_properties' ) # *********************************************************************** # *********************************************************************** # If run without args, build executables, in quiet mode. if len(sys.argv) == 1: sys.argv.append("py2exe") setup ( windows = ['multicolor.py'] , options = { 'py2exe' : { 'includes' : includes, 'excludes' : excludes, 'dll_excludes' : dll_excludes, 'packages' : packages, } }, data_files = data_files ) result=0 #import subprocess #result = subprocess.call ( # [ 'c:\Program Files\Inno Setup 4\ISCC.exe', # homedir+'\\multicolor.iss']) dist_paths = [ homeDir+'\\build',] if (result==0) and Kill_Distro : for path in dist_paths : if File_Exists ( path ) : shutil.rmtree ( path ) > -----Original Message----- > From: Werner F. Bruhin [mailto:[EMAIL PROTECTED] > Sent: Wednesday, February 20, 2008 5:24 AM > To: [EMAIL PROTECTED] > Cc: matplotlib-users@lists.sourceforge.net > Subject: Re: [Matplotlib-users] MatPlotLib + Py2exe, backend problems ... > > > Hi, > > [EMAIL PROTECTED] wrote: > > I *finally* got this to work!!! > > > > Thanks to Werner's message, I found the culpit: the > matplotlibrc file > > copied to the dist directory contains the TkAgg backend. > All I had to > > do is to change *that* file to say: > > > > backend : WXAgg > > > > Note that it's not the matplotlibrc in the installed > > copy - but the one in the resulting dist directory. > > > > In addition, I have to do a: > > > > set MATPLOTLIBDATA=.\mpl-data > > > You shouldn't need to do this. Note in > matplotlib.__init__.py, it looks > at a different folder if it is frozen by py2exe or py2app or ...: > # py2exe zips pure python, so still need special check > if getattr(sys,'frozen',None): > path = os.path.join(os.path.split(sys.path[0])[0], > 'matplotlibdata') > > So, if you use the sample setup.py I posted a while ago here > and on the > wxPython list it will create the matplotlibdata folder in your > distribution (basically a copy of your mpl-data folder) folder. > > before I start the exe file. I don't know why this is necessary > > because the code for _get_data_path appears to look at that > directory > > by default but if I don't set this, it can't find the data files. > > > > In any event, it works now - after bumping head for 2 > > weeks! > > > Hope the wall wasn't to hard, I always try this or the wxPython list > after a day or two ;-) . > > See you > Werner > -- John Henry ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users