tcl/tk version confusion with tkinter in Python 2.6, on OS X

Kent Johnson kent3737 at gmail.com
Mon Oct 6 21:57:07 EDT 2008


On Oct 6, 5:58 pm, kevin.wal... at gmail.com wrote:
> On Oct 6, 4:48 pm, njwilso... at gmail.com wrote:
>
> > I'm having trouble with tkinter on a new installation of Python (2.6),
> > built with the framework option from source that was downloaded from
> > python.org. I'm running OS 10.4 on a PowerPC G4.
>
> > The problem first arose when I tried to run matplotlib - it couldn't
> > find tcl/tk because it was searching for 8.5, and I had 8.4.

I also had this problem. The error message at this point is
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.6/
lib/python2.6/lib-dynload/_tkinter.so, 2): Library not loaded: /
Library/Frameworks/Tcl.framework/Versions/8.5/Tcl
  Referenced from: /Library/Frameworks/Python.framework/Versions/2.6/
lib/python2.6/lib-dynload/_tkinter.so
  Reason: image not found

Note that at this point I did have Tk 8.4 installed at
/System/Library/Frameworks/Tk.framework/Versions/8.4
and this works fine with Python 2.5, so Python 2.6 seems to be looking
specifically for Tk 8.5.

> >I found
> > and built tcl/tk 8.5, which led to a new error, reproduced below:
> > RuntimeError: tk.h version (8.4) doesn't match libtk.a version (8.5)

I installed Tcl/Tk 8.5 from ActiveState and got the same error.

> Based on what I'm seeing in the error message and in the setup.py file
> in the source code, it appears that Python 2.6 is looking in
> /System/Library/Frameworks for a Tcl/Tk installation rather than in
> /Library/Frameworks, which is second on the list of places to look.
> Tcl/Tk 8.4 comes standard with OS X in 10.4 and 10.5, and it's
> installed
> in /System/Library/Frameworks. The problem is that Python 2.6 seems to
> be linked against Tcl/Tk 8.5--is this correct?--and when it finds Tcl/
> tk
> 8.4, it returns an error.

I don't think that is quite right. In this second error, I think 8.4
is the compiled-in version, 8.5 is the version detected at runtime.
8.4 is the value of _tkinter.TK_VERSION, 8.4 is read from the Tk
object.

It looks to me like Python 2.6 is built against Tcl/tk 8.4 but at
runtime it looks for Tcl/tk 8.5.

> Should a bug report be filed against this? If the Mac build of Python
> 2.6 consistently looks in /System/Library/Frameworks for Tcl/Tk, it
> won't run Tkinter applications. It makes the build pretty much useless
> for anyone needing it to run Tkinter apps, including Idle. I'd say
> it's
> a showstopper issue.

I think so.

Kent



More information about the Python-list mailing list