Anybody willing to help? On Feb 14, 11:17 am, John Henry <[EMAIL PROTECTED]> wrote: > Thank you for the response. I am having trouble using the script. I > am assuming the TUI is the application this script was developed for > and did my best to replace that with the name of my own. > > To make things simple, let's say we take one of the sample matplotlib > program MULTICOLOR.PY and place that in a directory by itself. I have > attached the modified script below. Notice that I commented out the > "import TUI.Version" and replaced TUI.Version.VersionStr with some > arbitrary number. I have to create a directroy "dest" before running > it. > > When I run this script, there is no error message. Just: > > running install > running build > running install_data > > and then there is an empty directory "MULTICOLOR_2.31_Windows" created > and then nothing else. > > #================================= > from distutils.core import setup > import os > import sys > import matplotlib > import py2exe > > # The following code is necessary for py2exe to find win32com.shell. > # Solution from <http://starship.python.net/crew/theller/moin.cgi/ > WinShell> > > import win32com > import py2exe.mf as modulefinder > > for pth in win32com.__path__[1:]: > modulefinder.AddPackagePath("win32com", pth) > for extra in ["win32com.shell"]: > __import__(extra) > m = sys.modules[extra] > for pth in m.__path__[1:]: > modulefinder.AddPackagePath(extra, pth) > > tuiRoot = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) > roRoot = os.path.join(tuiRoot, "ROPackage") > sys.path = [tuiRoot, roRoot] + sys.path > > #import TUI.Version > > mainProg = os.path.join(tuiRoot, "multicolor.py") > > NDataFilesToPrint = 0 # number of data files to print, per directory > > def addDataFiles(dataFiles, fromDir, toSubDir=None, > inclHiddenDirs=False): > """ > Find data files and format data for the data_files argument > of > setup. > > In/Out: > - dataFiles: a list to which is appended zero or more of these > elements: > [subDir, list of paths to resource files] > > Inputs: > - fromDir: path to root directory of existing resource files > - toSubDir: relative path to resources in package; > if omitted then the final dir of fromDir is used > - inclHiddenDirs: if True, the contents of directories whose > names > start with "." are included > > Returns a list of the following elements: > """ > lenFromDir = len(fromDir) > if toSubDir == None: > toSubDir = os.path.split(fromDir)[1] > for (dirPath, dirNames, fileNames) in os.walk(fromDir): > if not inclHiddenDirs: > numNames = len(dirNames) > for ii in range(numNames-1, -1, -1): > if dirNames[ii].startswith("."): > del(dirNames[ii]) > if not dirPath.startswith(fromDir): > raise RuntimeError("Cannot deal with %r files; %s does not > start with %r" %\ > (resBase, dirPath, fromDir)) > toPath = os.path.join(toSubDir, dirPath[lenFromDir+1:]) > filePaths = [os.path.join(dirPath, fileName) for fileName in > fileNames] > dataFiles.append((toPath, filePaths)) > > # Add resources > dataFiles = [] > # TUI resources > for resBase in ("Help", "Scripts", "Sounds"): > toSubDir = os.path.join("MULTICOLOR", resBase) > fromDir = os.path.join(tuiRoot, toSubDir) > addDataFiles(dataFiles, fromDir, toSubDir) > # RO resources > for resBase in ("Bitmaps",): > toSubDir = os.path.join("RO", resBase) > fromDir = os.path.join(roRoot, toSubDir) > addDataFiles(dataFiles, fromDir, toSubDir) > > # Add tcl snack libraries > pythonDir = os.path.dirname(sys.executable) > snackSubDir = "tcl\\snack2.2" > snackDir = os.path.join(pythonDir, snackSubDir) > addDataFiles(dataFiles, snackDir, snackSubDir) > > # Add matplotlib's data files. > matplotlibDataPath = matplotlib.get_data_path() > addDataFiles(dataFiles, matplotlibDataPath, "matplotlibdata") > > if NDataFilesToPrint > 0: > print "\nData files:" > for pathInfo in dataFiles: > print pathInfo[0] > nFiles = len(pathInfo[1]) > for resPath in pathInfo[1][0:NDataFilesToPrint]: > print " ", resPath > if nFiles > NDataFilesToPrint: > print " ...and %d more" % (nFiles - NDataFilesToPrint) > > versDate = "2.31" # TUI.Version.VersionStr > appVers = versDate.split()[0] > distDir = "MULTICOLOR_%s_Windows" % (appVers,) > > inclModules = [ > # "email.Utils", # needed for Python 2.5.0 > ] > # packages to include recursively > inclPackages = [ > "MULTICOLOR", > "RO", > "matplotlib", > "dateutil", # required by matplotlib > "pytz", # required by matplotlib > # "matplotlib.backends", > # "matplotlib.numerix", > # "encodings", > # "numpy", > # "email", # needed for Python 2.5 > ] > > setup( > options = dict( > py2exe = dict ( > dll_excludes = [ > # the following are for matplotlib 0.87: > "libgdk_pixbuf-2.0-0.dll", > "libgobject-2.0-0.dll", > "libgdk-win32-2.0-0.dll", > "wxmsw26uh_vc.dll", > ], > excludes = [ # modules to exclude > "_gtkagg", > "_wxagg", > ], > #includes = inclModules, > packages = inclPackages, > ) > ), > windows=[ # windows= for no console, console= for console > dict( > script = mainProg, > dest_base = "MULTICOLOR", > icon_resources = [(1, "python.ico")], > ), > ], > data_files = dataFiles, > ) > > # rename dist to final directory name > os.rename("dist", distDir) > > On Feb 13, 10:07 am, "Russell E. Owen" <[EMAIL PROTECTED]> wrote: > > > In article > > <[EMAIL PROTECTED]>, > > John Henry <[EMAIL PROTECTED]> wrote: > > > > On Feb 9, 2:53 pm, John Henry <[EMAIL PROTECTED]> wrote: > > > > Has anybody been able to create an exe of their python applications > > > > involving matplotlib using pyinstall (ver 1.3)? I am getting a: > > > > > RuntimeError: Could not find the matplotlib data files > > > > > when I attempt to run the exe created. > > > > > In searching the web, it appears this is an issue when others tried to > > > > use py2exe as well. Unfortunately, the few hits I saw doesn't include > > > > enough details to inspire me as to what I should be doing in my > > > > pyinstall .spec file. > > > > > Does anybody has an example or information about this? > > > > > Thanks, > > > > Well, looks like nobody has an answer to this question. > > > > How'bout py2exe or other ways of creating exe files out of matplotlib > > > projects? Has anybody been able to do that? (I am cross-posting > > > these messages to the matploblib mailing list). > > > For py2exe I have appended a setup script I use to bundle an application > > that includes matplotlib. I am no Windows expert and there are probably > > better ways to do it, but it does work. I have made no attempt to strip > > out extra stuff. > > > (As for pyinstaller:a year or so ago I tried to use it to make a bundled > > *unix* version of my app. If that had worked I'd have considered trying > > to use it for Windows as well. But after a lot of experimenting I was > > never able to get anything even close to functional. Maybe it's better > > now.) > > > -- Russell > > > from distutils.core import setup > > import os > > import sys > > import matplotlib > > import py2exe > > > # The following code is necessary for py2exe to find win32com.shell. > > # Solution from > > <http://starship.python.net/crew/theller/moin.cgi/WinShell> > > import win32com > > import py2exe.mf as modulefinder > > for pth in win32com.__path__[1:]: > > modulefinder.AddPackagePath("win32com", pth) > > for extra in ["win32com.shell"]: > > __import__(extra) > > m = sys.modules[extra] > > for pth in m.__path__[1:]: > > modulefinder.AddPackagePath(extra, pth) > > > tuiRoot = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) > > roRoot = os.path.join(tuiRoot, "ROPackage") > > sys.path = [tuiRoot, roRoot] + sys.path > > import TUI.Version > > mainProg = os.path.join(tuiRoot, "runtui.py") > > > NDataFilesToPrint = 0 # number of data files to print, per directory > > > def addDataFiles(dataFiles, fromDir, toSubDir=None, > > inclHiddenDirs=False): > > """Find data files and format data for the data_files argument of > > setup. > > > In/Out: > > - dataFiles: a list to which is appended zero or more of these > > elements: > > [subDir, list of paths to resource files] > > > Inputs: > > - fromDir: path to root directory of existing resource files > > - toSubDir: relative path to resources in package; > > if omitted then the final dir of fromDir is used > > - inclHiddenDirs: if True, the contents of directories whose names > > start with "." are included > > > Returns a list of the following elements: > > """ > > lenFromDir = len(fromDir) > > if toSubDir == None: > > toSubDir = os.path.split(fromDir)[1] > > for (dirPath, dirNames, fileNames) in os.walk(fromDir): > > if not inclHiddenDirs: > > numNames = len(dirNames) > > for ii in range(numNames-1, -1, -1): > > if dirNames[ii].startswith("."): > > del(dirNames[ii]) > > if not dirPath.startswith(fromDir): > > raise RuntimeError("Cannot deal with %r files; %s does not > > start with %r" %\ > > (resBase, dirPath, fromDir)) > > toPath = os.path.join(toSubDir, dirPath[lenFromDir+1:]) > > filePaths = [os.path.join(dirPath, fileName) for fileName in > > fileNames] > > dataFiles.append((toPath, filePaths)) > > > # Add resources > > dataFiles = [] > > # TUI resources > > for resBase in ("Help", "Scripts", "Sounds"): > > toSubDir = os.path.join("TUI", resBase) > > fromDir = os.path.join(tuiRoot, toSubDir) > > addDataFiles(dataFiles, fromDir, toSubDir) > > # RO resources > > for resBase in ("Bitmaps",): > > toSubDir = os.path.join("RO", resBase) > > fromDir = os.path.join(roRoot, toSubDir) > > addDataFiles(dataFiles, fromDir, toSubDir) > > > # Add tcl snack libraries > > pythonDir = os.path.dirname(sys.executable) > > snackSubDir = "tcl\\snack2.2" > > snackDir = os.path.join(pythonDir, > > ... > > read more ยป
-- http://mail.python.org/mailman/listinfo/python-list