On Sat, Oct 15, 2011 at 9:51 PM, Albert-Jan Roskam <[email protected]> wrote: > Hello, > Can I set the LD_LIBRARY_PATH environment variable (on-the-fly) within a .py > file? > I would like to use an .so-file that lives in a non-standard location. > > This does not work: > try: > os.environ["LD_LIBRARY_PATH"] += (":" + path) > except KeyError: > os.environ["LD_LIBRARY_PATH"] = path > Currently, I can only run the program in the terminal: > export LD_LIBRARY_PATH=/home/dude/Desktop/test > python /home/dude/Desktop/testLoadLibLinux.py > This works (yaaayy!), but I'd like to run the .py file directly. > Is this possible? I also don't like the fact that I can't test the .py file > in Idle. > Perhaps a complicating factor is a bug in LD_LIBRARY_PATH > in Linux Ubuntu 10 (the version I'm using): > https://bugs.edge.launchpad.net/ubuntu/+source/xorg/+bug/366728 > https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/366728/comments/21 > solution: > sudo gedit /etc/X11/Xsession.options > (change "use-ssh-agent" into "no-use-ssh-agent") > > Thank you in advance for your thoughts! > > Cheers!! > Albert-Jan >
Alright, I'm not going to pretend to be an expert on this one, a bit of this is speculation and inference from what I know about dynamic linking. In short, I don't think you can modify LD_LIBRARY_PATH on the fly and have it actually work. The reason for this is that the linker runs and finds all the libraries *before* the python process actually starts. So by the time you go and modify the environment, all libraries have already been linked, and your modified variable is never even read by the linker. So the best you can do is write a tiny wrapper to set LD_LIBRARY_PATH and then run your actual script through it. Or you could set the environment variable and then fork(), I suppose, since the child will inherit the modified environment. But the wrapper is your simplest option. HTH, Hugo _______________________________________________ Tutor maillist - [email protected] To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
