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