From: <kc1...@ya...> - 2008-02-19 19:01:32
|
With Stef's help, I was able to get pass the "Matplotlib datafile not found" problem in using py2exe and Matplotlib under Python 2.3 - but then ran into the same Tkinter not loaded problem like he did. After reading Stef's messages from this list, I downloaded the latest version of Matplotlib - only to find that Python 2.3 is no longer supported. So, I loaded up Python 2.5 and ran the setup script for Py2exe. Now, py2exe is unable to find wxmsw26uh_vc.dll - eventhough I have wxPython 2.8 installed. So, I dug up a copy of wxPython 2.6 and have that installed. The file is now there but py2exe still can't find it. This is very fustrating! > Date: Mon, 18 Feb 2008 21:09:07 -0600 > From: "John Hunter" <jd...@gm...> > Subject: Re: [Matplotlib-users] [wxPython-users] Re: MatPlotLib + > Py2exe, backend problems ... > To: "Stef Mientki" <s.m...@ru...> > Cc: mat...@li... > Message-ID: > <88e...@ma...> > Content-Type: text/plain; charset=ISO-8859-1 > > On Feb 18, 2008 1:11 PM, Stef Mientki <s.m...@ru...> wrote: > > > What is setup.cfg, where can I find it and where can I get > information > > about it ? > > Let's keep this on matplotlib-users so we don't annoy the > good folks at the wxpython and distutils lists... > > setup.cfg is a build/configure file that ships w/ matplotlib > in recent versions (0.91.x). If it is not in your source > distribution, let us know which distro you are using, where > you got it from, what you have already, etc.... Among other > things, it lets you conditionally turn of/off builds of > certain GUI backends and other optional features. > > JDH > > > > ------------------------------ > -- John Henry |
From: <kc1...@ya...> - 2008-02-19 20:13:12
|
So, do I understand this correctly: In order to get rid of the Tkinter problem when building a matplotlib application using py2exe, I need 0.91.2 ver of matplotlib and use the setup.cfg file to select the backend I want (wxpython in my case). Then run py2exe to build the ap. Correct? But then, as I posted earlier, this create a new problem for me in that py2exe says it can't find wxmsw26uh_vc.dll - even though the file exists. What I need is a version of 0.91.2 ver of matplotlib that works with Python 2.3 to see if that works, or I guess I would include Tkinter with my exe? Do I understand all these correctly? > -----Original Message----- > Here was the solution: > Ok I updated MatPlot from version from 0.87.7 to 0.91.2 > > > cheers, > Stef > > -- John Henry |
From: Michael D. <md...@st...> - 2008-02-19 20:19:33
|
kc1...@ya... wrote: > What I need is a version of 0.91.2 ver of matplotlib > that works with Python 2.3 to see if that works... I might be misremembering, but I thought 0.91.2 worked with Python 2.3. I don't use 2.3 every day, however. Can you send the errors that are produced when you build or run matplotlib 0.91.2 with Python 2.3? Or are you just referring to the fact that there are no Windows binaries provided for Python 2.3? Cheers, Mike -- Michael Droettboom Science Software Branch Operations and Engineering Division Space Telescope Science Institute Operated by AURA for NASA |
From: Werner F. B. <wer...@fr...> - 2008-02-20 09:45:26
|
Hi, kc1...@ya... wrote: > So, do I understand this correctly: > > In order to get rid of the Tkinter problem when > building a matplotlib application using py2exe, I need > 0.91.2 ver of matplotlib and use the setup.cfg file to > select the backend I want (wxpython in my case). Then > run py2exe to build the ap. Correct? > I haven't tried it with 0.91.x but with 0.90 I used a matplotlib exe installer for Windows and I can create a distribution of my application with py2exe which does NOT contain tkinter. > But then, as I posted earlier, this create a new > problem for me in that py2exe says it can't find > wxmsw26uh_vc.dll - even though the file exists. > That dll should no longer be needed by matplotlib. Obviously if you use a wxPython build you will get the it, i.e. I am on 2.8 so I have a bunch of "wxmsw26uh???.dll" files in my dist folder. > What I need is a version of 0.91.2 ver of matplotlib > that works with Python 2.3 to see if that works, or I > guess I would include Tkinter with my exe? > There was another message from Stef which might be the explanation, the default matplotlibrc file is defining TKAgg as the default backend, so change it to the following: backend : WXAgg numerix : numpy # numpy, Numeric or numarray Werner |
From: <kc1...@ya...> - 2008-02-20 00:41:54
|
Michael, I am referring to the fact that there are no Windows binaries provided for Python 2.3. If I simply copy the matplotlib directory over to Python23, py2exe will get confused. I have no clue how to build it for Python23. I don't even have any C compiler. > -----Original Message----- > From: Michael Droettboom [mailto:md...@st...] > Sent: Tuesday, February 19, 2008 12:19 PM > To: kc1...@ya... > Cc: mat...@li... > Subject: Re: [Matplotlib-users] MatPlotLib + Py2exe, backend problems ... > > > kc1...@ya... wrote: > > What I need is a version of 0.91.2 ver of matplotlib > > that works with Python 2.3 to see if that works... > > I might be misremembering, but I thought 0.91.2 worked with > Python 2.3. > I don't use 2.3 every day, however. Can you send the > errors that are > produced when you build or run matplotlib 0.91.2 with Python 2.3? Or > are you just referring to the fact that there are no Windows binaries > provided for Python 2.3? > > Cheers, > Mike > > -- > Michael Droettboom > Science Software Branch > Operations and Engineering Division > Space Telescope Science Institute > Operated by AURA for NASA > -- John Henry |
From: <kc1...@ya...> - 2008-02-20 11:51:29
|
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 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! Thanks everybody. > -----Original Message----- > From: Werner F. Bruhin [mailto:wer...@fr...] > Sent: Wednesday, February 20, 2008 1:45 AM > To: kc1...@ya... > Cc: mat...@li... > Subject: Re: [Matplotlib-users] MatPlotLib + Py2exe, backend problems ... > > > Hi, > > kc1...@ya... wrote: > > So, do I understand this correctly: > > > > In order to get rid of the Tkinter problem when > > building a matplotlib application using py2exe, I need > > 0.91.2 ver of matplotlib and use the setup.cfg file to > > select the backend I want (wxpython in my case). Then > > run py2exe to build the ap. Correct? > > > I haven't tried it with 0.91.x but with 0.90 I used a > matplotlib exe installer for Windows and I can create a > distribution of my application with py2exe which does NOT > contain tkinter. > > > But then, as I posted earlier, this create a new > > problem for me in that py2exe says it can't find wxmsw26uh_vc.dll - > > even though the file exists. > > > That dll should no longer be needed by matplotlib. Obviously > if you use a wxPython build you will get the it, i.e. I am on > 2.8 so I have a bunch of "wxmsw26uh???.dll" files in my dist folder. > > What I need is a version of 0.91.2 ver of matplotlib > > that works with Python 2.3 to see if that works, or I > > guess I would include Tkinter with my exe? > > > There was another message from Stef which might be the > explanation, the default matplotlibrc file is defining TKAgg > as the default backend, so change it to the following: > > backend : WXAgg > numerix : numpy # numpy, Numeric or numarray > > > Werner > -- John Henry |
From: Werner F. B. <wer...@fr...> - 2008-02-20 13:23:58
|
Hi, kc1...@ya... 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 |
From: <kc1...@ya...> - 2008-02-20 17:56:30
|
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:wer...@fr...] > Sent: Wednesday, February 20, 2008 5:24 AM > To: kc1...@ya... > Cc: mat...@li... > Subject: Re: [Matplotlib-users] MatPlotLib + Py2exe, backend problems ... > > > Hi, > > kc1...@ya... 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 |
From: Stef M. <ste...@gm...> - 2008-02-19 19:23:48
|
hi John, kc1...@ya... wrote: > With Stef's help, I was able to get pass the > "Matplotlib datafile not found" problem in using > py2exe and Matplotlib under Python 2.3 - but then ran > into the same Tkinter not loaded problem like he did. > > After reading Stef's messages from this list, I > downloaded the latest version of Matplotlib - only to > find that Python 2.3 is no longer supported. So, I > loaded up Python 2.5 and ran the setup script for > Py2exe. Now, py2exe is unable to find > wxmsw26uh_vc.dll - eventhough I have wxPython 2.8 > installed. So, I dug up a copy of wxPython 2.6 and > have that installed. The file is now there but py2exe > still can't find it. > > This is very fustrating! > > and it's even more frustrated that was discussed recently in again another list (wxPython-list) ;-) Here was the solution: Ok I updated MatPlot from version from 0.87.7 to 0.91.2 cheers, Stef |