Updates to enviironment variables and ctypes
Dave Angel
davea at dejaviewphoto.com
Wed May 13 08:56:56 EDT 2009
Scott Flynn wrote:
> I was hoping I could update LD_LIBRARY_PATH at runtime and load a library
> through ctypes from there, but I haven't been able to.
>
> I've tried all of these.
>
> os.environ['LD_LIBRARY_PATH'] = "./lib"
> os.putenv('LD_LIBRARY_PATH', "./lib")
> os.system("export LD_LIBRARY_PATH=./lib")
> lib = CDLL("libevaluator.so")
>
> Traceback (most recent call last):
> File "Evaluator.py", line 9, in <module>
> lib = CDLL("libevaluator.so")
> File "/usr/lib/python2.5/ctypes/__init__.py", line 348, in __init__
> self._handle = _dlopen(self._name, mode)
> OSError: libevaluator.so: cannot open shared object file: No such file or
> directory
>
> The only thing that works is to set the variable before starting Python. I'm
> assuming that's just how it's going to be. Is this a bug or is it meant to
> be?
>
>
(You should mention that you're using Unix, and probably what version of
Python you're using. It might make a difference.)
Doesn't ctypes.LoadLibrary() accept a pathname as argument? That's what
the Python 2.6 docs say. I haven't experimented, but it'd be worth a
try. In this case, I'd make it an absolute path, just to convince it
not to look through the directories in the LD_LIBRARY_PATH.
More information about the Python-list
mailing list