Charles Moad wrote: > Installing each > dependency would probably be just as easy as trying to use components > from my installer.
I put instructions for how to do this in my package for OS-X-10.3, py2.3.0. Here they are. If you do all this, you can donate the package to Bob's repository on pythonmac.org. There is a related thread about defining a standard way to do this for matplotlib, so it will build out of the box. They should work just fine for newer versions of OS, matplotlib, and python. Sorry they are a bit wordy: Installing matplotlib on OS-X (10.3.7) Here are my notes as to what it took to get matplotlib (0.71) installed and working on OS-X. I have so far kept a fink-free system, so that's what I've done here as well. I use it with the AGG back end for generating images for a web site, and hopefully with the wx backend for interactive use and embedding in wx Applications. I've also quickly got it working with TK. Note that this is kind of a running commentary, not well edited. I'd read the whole thing before starting. 1) Requirements: ------------------------------------------- According to the matplotlib install docs (http://matplotlib.sourceforge.net/installing.html), you need the following: freetype (>= 2.1.7) libpng zlib Personally, I've been avoiding Fink, as it doesn't seem to play well with the rest of OS-X, including the Apple supplied Python, so I've looked elsewhere for these libs. a) Freetype: I seem to have it in: /usr/X11R6/include/freetype2 I don't think I installed it myself, so it probably came with Apple's X11, Which I did install. However, I seemed to be having problems with that version, so I looked, and it seems to be: libfreetype.6.3.dylib Given that freetype2 is currently at version 2.1.9, I have no idea what to make of that! So off to sourceforge to get a new freetype: http://freetype.sourceforge.net/index2.html where I got: freetype-2.1.9.tar.gz Following the instructions in docs/INSTALL.UNX: $ ./configure $ make $ sudo make install That puts it in /usr/local/..., which is a good place for it. NOTE: The above will build freetype as a shared library, which is fine if you are building ot run on the same system you are building on. However, if you want to buuild a re-distributable package, you'll need a static library, which you can get by doing: $ ./configure --disable-shared --enable static $ make $ sudo make install Hmm. that made the static libs (*.a) , but also the dynamic ones. Make sure to do: $ make clean if you had already built it. You may also have to remove the shared libs, so that they won't be found (*.dyld). I had to remove them from /usr/local/lib. b) zlib: I have: /usr/include/zlib.h I don't know where I might have gotten it, but there it is. NOTE: I checked on another system in my office, and it doesn't have zlib. It does, however have libz, which I am told is the same thing, to you shouldn't need this. c) libpng: This, I didn't have on my system, except inside the wxWidgets source tree, so I went looking for it. Note that you need zlib to compile libpng, so make sure you have that first. I did a google search for "libpng OS-X". I found: http://www.libpng.org/pub/png/pngcode.html Which led me to the libpng sourceforge site. From there I downloaded: libpng-1.2.8.tar.gz unpacked it, and opened a terminal in the libpng-1.2.8 directory, and did: $ cp scripts/makefile.darwin ./makefile (note that according to the INSTALL, there is supposed to be a makefile.macosx, but it wasn't there) I took a look in the makefile, and found: ZLIBLIB=/usr/local/lib ZLIBINC=/usr/local/include Which is not where zlib is on my system. However, while I can find zlib.h, I couldn't fine the actual lib, so I tried make without changing anything. $ make Which seemed to work fine. zlib must be installed in a standard location, and gcc found it. $ sudo make install to install the lib into /usr/local/ (this was specified in the makefile, and it's a good place for it) $ make test and $ ./pngtest pngnow.png Which both seemed to pass. If you want to build a re-distributable version of matplotlib, you need the static version of libpng, instead of the dynamic one. It doesn't use ./configure, so instead, I did a: sudo make install-static and that installed the *.a files in /usr/local/lib. d) Numeric or numarray: I already have Numeric installed, from Bob Ippolito's PIMP (MacPython Package Manager) repostitory. (www.undefined.org/python) 2) Building matplotlib --------------------------------------------------------- First, I took a look at the matplotlib setup.py. It had "auto" for the back-end flags, so I thought I would give it a try that way: $python setup.py build If you have only the static version of libpng and libfreetype (*.a, and not *.dylib) in /usr/local/lib (or anywhere else on your lib search path), then it should link those statically. That worked! $ sudo python setup.py install 4) And now to test! $python >>> import pylab Could not open font file /Library/Fonts/NISC18030.ttf No module named pygtk PyGTK version 1.99.16 or greater is required to run the GTK Matplotlib backends This turns out to be because the matlabrc file sets the GTKAgg back end as the default. You have two choices. 1) you can set the back end before importing pylab. >>> import matplotlib >>> matplotlib.use('Agg') >>> import pylab This works fine 2) Edit the matplotlibrc file. I found it in: /System/Library/Frameworks/Python.framework/Versions/2.3/share/matplotlib/.matplotlibrc Change the line: backend : GTKAgg # the default backend to backend : Agg # the default backend And you're all set to make images for the web, etc. I'm going to leave getting it to work with wxPython for another day. 3) Building a matplotlib Binary Package for OS-X: First you need to make sure you've got libpng and libfreetype staticaly linked. I did this by copying the headers and *.a files for them into a directory I created called "StaticLibs", in the main matplot lib directory (the one setup,py is in). You could just as easily put in links, rather than copies, probably a better idea, actually. Then I edited setupext.py, so that distutils would only look there: basedir = { 'win32' : ['win32_static',], 'linux2' : ['/usr/local', '/usr',], 'linux' : ['/usr/local', '/usr',], # 'darwin' : ['/usr/local', '/usr', '/sw', '/usr/X11R6'], 'darwin' : ['StaticLibs'], 'freebsd4' : ['/usr/local', '/usr'], 'sunos5' : [os.getenv('MPLIB_BASE') or '/usr/local',], } I'm talking to John Hunter about having a conditional Static setup in the official setup.py to support this. This seemed to so the job. To test, you can run: $ otool -L *.so in the matplotlib directory that is buried in the build directory. it will tell you what libs the matplotlib extensions are linked to. They should not be linked to libfreetype or libpng. libz is OK, it's included with the stock OS-X. Once you've got that built right, you can make an installer package with Py2App. This is a note from Bob Ippolito on the macPython mailing list: """use bdist_mpkg from py2app to make a redistributable .pkg installer for it. After installing py2app, you should have a tool in /usr/local/bin called "bdist_mpkg" that will Just Do It without any setup.py modifications to the target lib... so go into the matplotlib directory, type bdist_mpkg, and cross your fingers that a dist/matplotlib-xx.pkg """ Here's exactly what I tried: In the matplotlib directory (the same place as setup.py) $ bdist_mpkg and it worked! Note: there are occasionally troubles with installing a newer matplotlib over an older one. You may want to remove an older version before installing, if you have one. To do this, delete: /Library/Python/2.3/matplotlib/ Then click the mpkg. to install. Building with tcl/TK: I downloaded the BI (Batteries Included) installer for tcl/Tk Aqua. It's got a lot of stuff I don't need, but it's only disk space. I then used the MacPython PackageManager and the standard package list, and installed Tkinter from there. It seemed to work. Now back to the build cycle...Yeah it works! -- Christopher Barker, Ph.D. Oceanographer NOAA/OR&R/HAZMAT (206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception [EMAIL PROTECTED] _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig