[Pythonmac-SIG] Another tcl/tk problem with python--PIL this time

Russell E. Owen rowen at cesmail.net
Mon Oct 30 23:37:38 CET 2006


You'll recall that I reported crashes with the macpython.org matplotlib 
package. This turned out to be because I was using my own Tcl/Tk (a good 
version instead of the version installed with 10.4).

It turns out PIL has a similar but more subtle problem. It works for me, 
but if I use py2app to bundle an application that uses PIL, it fails one 
some users machines. Building a new PIL locally fixes the problem, of 
course.

This is another plea for the _tkinter.so that comes with the standard 
macpython to be set up to look for a Tcl/Tk first in 
/Library/Frameworks, then in /System/Library/Frameworks. I think the 
packages would have just worked fine with that change (though i've not 
ripped out my Tcl/Tk to prove that).

The current situation is nasty:
- Any serious Tcl/Tk/Tkinter user will install a better version of 
Tcl/Tk on MacOS X.
- MacPython needs a simple modification to support it:
<http://www.astro.washington.edu/rowen/PythonOnMacOSX.html>
- But this modification breaks matplotlib and PIL, and perhaps any 
python package installed with a binary installer built on an unmodified 
MacPython.
Ouch.

I know there is talk of including a Tcl/Tk with Python like Windows 
does. I hope we don't do that because, based on my experience with 
Tcl/Tk on Mac, unix and Windows, the Windows solution is the worst of 
the lot:
- It makes upgrading tcl/tk harder. Serious users of Tcl/Tk want this to 
get useful bug fixes (no package that large is perfect).
- It makes installing tcl/tk additions harder (for example I use the 
snack sound library). On Windows it's not easy to figure out where to 
put these extensions, nor is it easy to test them!

Modifying _tkinter.so is trivial and it does the job. If it was part of 
the standard MacPython distro then the problem with broken extensions 
would probably be solved. If proof of that assertion would tip the 
balance, I'm willing to do more leg work on it.

-- Russell



More information about the Pythonmac-SIG mailing list