homebrew 2.3 install on RedHat9 not playing nice with Tkinter

Martin Franklin mfranklin1 at gatwick.westerngeco.slb.com
Thu Aug 28 04:44:37 EDT 2003


On Thursday 28 August 2003 8:42 am, Martin Franklin wrote:
> On Wednesday 27 August 2003 9:12 pm, Rob Andrews wrote:
> > I'm on a Red Hat 9 system, which has Python 2.2.2 installed, and I
> > installed 2.3 separately into /home/rob/Python-2.3/ (creating the
> > symbolic link "py23" to point to my 2.3 installation). Now I'm trying to
> > work out the kinks in the process.
> >
> > Unable to run Idle using 2.3 the way I've got things set up, I created a
> > super simple Tkinter test program that just pops up a Label widget. I
> > pasted below an example of how the RH-provided 2.2 runs the script
> > without incident, but running the script with 2.3 produces a traceback.
> > If someone can help me see the error of my ways, I'll be most
> > appreciative.
> >
> > [Wed Aug 27][03:01 PM] ~/Python-2.3/test $ python -V
> > Python 2.2.2
> > [Wed Aug 27][03:04 PM] ~/Python-2.3/test $ py23 -V
> > Python 2.3
> > [Wed Aug 27][03:01 PM] ~/Python-2.3/test $ py23 test2.py
> > Traceback (most recent call last):
> >   File "test2.py", line 1, in ?
> >     from Tkinter import Label
> >   File "/home/rob/Python-2.3/Lib/lib-tk/Tkinter.py", line 38, in ?
> >     import _tkinter # If this fails your Python may not be configured for
> > Tk ImportError: No module named _tkinter
> > [Wed Aug 27][03:01 PM] ~/Python-2.3/test $ python test2.py
> >
> > -Rob
> > (mediocre with Python, incompetent with linux)
>
> Rob,
>
> I just finished building python 2.3 on my redhat 9 laptop...  the first
> time I did the make it failed (near the end) because it couldn't find the
> Tk/Tcl libs.
>
>  On my system they are in /usr/local/lib (because I built them myself)
> on your's I guess they would be in /usr/lib.  So to fix the build I set
> LD_RUN_PATH to /usr/local/lib and them ran make again.
>
>
> HTH
> Martin



OK so just to check what I did I did it again...:

The error I got when I did make for the first time was:-


gcc -pthread -shared build/temp.linux-i686-2.3/_tkinter.o 
build/temp.linux-i686-2.3/tkappinit.o -L/usr/X11R6/lib -L/usr/local/lib 
-ltk8.4 -ltcl8.4 -lX11 -o build/lib.linux-i686-2.3/_tkinter.so
 *** WARNING: renaming "_tkinter" since importing it failed: libtk8.4.so:  
cannot open shared object file: No such file or directory


So it looks like _tkinter got compiled OK but when it was imported (as a test 
I presume) it failed to find the tk library..  so:-


[mfranklin1 at m-franklin Python-2.3]$ export LD_RUN_PATH=/usr/local/lib

[mfranklin1 at m-franklin Python-2.3]$ make

gcc -pthread -shared build/temp.linux-i686-2.3/_tkinter.o 
build/temp.linux-i686-2.3/tkappinit.o -L/usr/X11R6/lib -L/usr/local/lib 
-ltk8.4 -ltcl8.4 -lX11 -o build/lib.linux-i686-2.3/_tkinter.so
running build_scripts

This time it continues.  without error/warning...


What is LD_RUN_PATH???


man ld

<snip>

       -rpath dir
           Add a directory to the runtime library search path.  This  is  used
           when  linking  an  ELF  executable with shared objects.  All -rpath
           arguments are concatenated and passed to the runtime linker,  which
           uses  them  to locate shared objects at runtime.  The -rpath option
           is also used when locating  shared  objects  which  are  needed  by
           shared objects explicitly included in the link; see the description
           of the -rpath-link option.  If -rpath is not used when  linking  an
           ELF   executable,   the   contents   of  the  environment  variable
           "LD_RUN_PATH" will be used if it is defined.

           The -rpath option may also be used on SunOS.  By default, on SunOS,
           the  linker  will  form  a  runtime  search patch out of all the -L
           options it is given.  If a  -rpath  option  is  used,  the  runtime
           search  path  will  be formed exclusively using the -rpath options,
           ignoring the -L options.  This can be useful when using gcc,  which
           adds many -L options which may be on NFS mounted filesystems.

           For  compatibility with other ELF linkers, if the -R option is fol-
           lowed by a directory name, rather than a file name, it  is  treated


Cheers
Martin



















More information about the Python-list mailing list