Michael Schwendt wrote:
On 01/12/2007, Konstantin Svist <fry.kun@xxxxxxxxx> wrote:
After checking the system against a clean one and trying to copy some
things over, I tried removing the /usr/local install (by hand, since
uninstall is not really available with python source). That made
everything work.
Looking carefully at the filenames, I noticed that there were files
/usr/local/libpython2.5.so and /usr/local/libpython2.5.so.1.0 - and sure
enough, after bringing them back into /usr/local/lib/ things went back
to the broken state.
So:
* $LD_LIBRARY_PATH is not set
* I explicitly run /usr/bin/python
* "import sys; print sys.path" doesn't mention any /usr/local directories
* "import <some package that's only available in stock python>" works
* "import <some package that's only available in custom python>" doesn't
work
So how come it seems to use /usr/local/lib/libpython2.5.so?? Where did I
go wrong?
I've pointed out before that your local install of libpython is likely
the culprit, because the main python executable is linked against it
and binary modules (such as CPickle.so) depend on it, too. However, I
did not examine your run-time linker and python path configurations to
find out how exactly you installed private stuff to /usr/local.
Obviously, the /usr/local/bin/python binary contains different search
paths than /usr/bin/python. And with regard to the linker, even
without using LD_LIBRARY_PATH you can make available libraries in
/usr/local/lib via ld.so.conf*
You say you run /usr/bin/python, so print the output of "ldd
/usr/bin/python", please, when /usr/local/lib/libpython2.5.so is
available. Plus, the output of "python -c 'import sys; print sys.path'
".
$ ldd /usr/bin/python
linux-gate.so.1 => (0x00110000)
libpython2.5.so.1.0 => /usr/local/lib/libpython2.5.so.1.0
(0x00111000)
libpthread.so.0 => /lib/libpthread.so.0 (0x007f6000)
libdl.so.2 => /lib/libdl.so.2 (0x007ef000)
libutil.so.1 => /lib/libutil.so.1 (0x00d21000)
libm.so.6 => /lib/libm.so.6 (0x007c4000)
libc.so.6 => /lib/libc.so.6 (0x00669000)
/lib/ld-linux.so.2 (0x0064a000)
$ python -c 'import sys; print sys.path'
['', '/usr/lib/python25.zip', '/usr/lib/python2.5',
'/usr/lib/python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk',
'/usr/lib/python2.5/lib-dynload', '/usr/lib/python2.5/site-packages',
'/usr/lib/python2.5/site-packages/Numeric',
'/usr/lib/python2.5/site-packages/PIL',
'/usr/lib/python2.5/site-packages/gst-0.10',
'/usr/lib/python2.5/site-packages/gtk-2.0']
When /usr/local/lib/libpython2.5.so is NOT available, I get this:
$ ldd /usr/bin/python
linux-gate.so.1 => (0x00110000)
libpython2.5.so.1.0 => /usr/lib/libpython2.5.so.1.0 (0x00111000)
libpthread.so.0 => /lib/libpthread.so.0 (0x007f6000)
libdl.so.2 => /lib/libdl.so.2 (0x007ef000)
libutil.so.1 => /lib/libutil.so.1 (0x00d21000)
libm.so.6 => /lib/libm.so.6 (0x007c4000)
libc.so.6 => /lib/libc.so.6 (0x00669000)
/lib/ld-linux.so.2 (0x0064a000)