hi John, John Henry wrote: > Anybody willing to help? > I struggled the past few days with the same problem, and with the help of Werner Bruhin (wxPython list) I found a solution. I had 2 problems: - not finding mpl datapath - matplotlib insisted on installing backends that were distorted on my system
The first problem was solved with the following script: it has some special parts - remove the distro and build directories before running setup - a special matplot part, ensuring mpl-data is copied and installed - a lot of excludes for matplotlib ( which doesn't seem to work :-( ) Kill_Distro = True MatPlotLib_Wanted = True from distutils.core import setup import py2exe import sys subdirs = [ '..\\P24_support', '..\\P24_pictures', '..\\P24_Lib_Extensions' ] for subdir in subdirs: if not ( subdir in sys.path) : sys.path.append ( subdir ) from file_support import * import shutil import glob # *********************************************************************** # Some suggests that old build/dist should be cleared # *********************************************************************** dist_paths = [ 'D:\\Data_Python\\P24_PyLab_Works\\build', 'D:\\Data_Python\\P24_PyLab_Works\\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' ) data_files.append ( ( r'mpl-data', glob.glob ( r'P:\\Python\\Lib\\site-packages\\matplotlib\\mpl-data\\*.*' ))) data_files.append ( ( r'mpl-data', glob.glob ( r'P:\\Python\\Lib\\site-packages\\matplotlib\\mpl-data\\matplotlibrc' ))) data_files.append ( ( r'mpl-data\\images', glob.glob ( r'P:\\Python\\Lib\\site-packages\\matplotlib\\mpl-data\\images\\*.*' ))) data_files.append ( ( r'mpl-data\\fonts\\afm', glob.glob ( r'P:\\Python\\Lib\\site-packages\\matplotlib\\mpl-data\\fonts\\afm\\*.*' ))) data_files.append ( ( r'mpl-data\\fonts\\pdfcorefonts', glob.glob ( r'P:\\Python\\Lib\\site-packages\\matplotlib\\mpl-data\\fonts\\pdfcorefonts\\*.*' ))) data_files.append ( ( r'mpl-data\\fonts\\ttf', glob.glob ( r'P:\\Python\\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 = ['PyLab_Works.py'] , options = { 'py2exe' : { 'includes' : includes, 'excludes' : excludes, 'dll_excludes' : dll_excludes, 'packages' : packages, }}, data_files = data_files ) import subprocess result = subprocess.call ( [ 'P:\Program Files\Inno Setup 4\ISCC.exe', 'D:\Data_Python\P24_PyLab_Works\PyLab_Works.iss']) if (result==0) and Kill_Distro : for path in dist_paths : if File_Exists ( path ) : shutil.rmtree ( path ) Thé essential issue is not to use pylab to do the imports for you, but perform your own imports, this might be a lot of work: in my case the import looks like this (I don't include numerix, because I use numpy), so in my program to distribute, I use this : import matplotlib matplotlib.use('WXAgg') from matplotlib.backends.backend_wxagg \ import Toolbar, FigureManager from matplotlib.backends.backend_wxagg \ import FigureCanvasWxAgg as FigureCanvas from matplotlib import rcParams, mlab, cm from matplotlib.mlab import meshgrid from matplotlib.figure import Figure from matplotlib.axes import Subplot hope this might help you somewhat, cheers, Stef -- http://mail.python.org/mailman/listinfo/python-list