[Distutils] setuptools and shared library dependencies

Greg Landrum greg.landrum at gmail.com
Wed Feb 4 06:57:15 CET 2009


Dear all,

I'm in the process of shifting a project I run over to using
setuptools for distribution. Things have mostly worked quite well to
this point, so compliments to all involved. :-)

I'm just about finished, but I've run up against a problem with
extension modules that have shared library dependencies.

Here's a schematic of my directory structure:

BASE/
    bin/
        libDepA.so
    pydir/
         __init__.py
         modA.so
         foo.py

modA.so is an extension module that is dynamically linked against libDepA.so.

I've managed to get everything setup so that I can create an egg
reproducing the directory structure above, install that egg (not
zipped) with easy_install, and do things like
  >>> from pydir import foo
However, when I try to import modA:
  >>> from pydir import modA
I get the (expected) "ImportError: libDepA.so: cannot open shared
object file: No such file or directory"

If I were not using setuputils, I would make sure that I had BASE/bin
in my LD_LIBRARY_PATH and everything would work without problems.

If I explictly add the bin directory from the egg
(/usr/lib/python2.5/site-packages/BASE-0.1-py2.5-linux-i686.egg) to
LD_LIBRARY_PATH things also work, but requiring this level of
involvement from the user isn't particularly pleasing.

Is there a solution to this problem or is this a use case that doesn't
fit with setuptools?

thanks,
-greg


More information about the Distutils-SIG mailing list