原因
os.environ["LD_LIBRARY_PATH"] = ...
无效并不简单:此环境变量控制动态加载程序的行为(
ld-linux.so.2在Linux和
ld.so.1Solaris上),但是该加载程序仅
LD_LIBRARY_PATH在进程启动时立即查看。 在
这一点 之后
更改
LD_LIBRARY_PATH当前过程中的值无效(就像该问题的答案所说)。
您确实有一些选择:
答:如果您知道需要
xyz.so使用
/some/path,并从一开始就控制python脚本的执行,则只需
LD_LIBRARY_PATH根据自己的喜好进行设置(在检查是否已设置好之后),然后重新执行自己。这是做什么的
Java。
B.您可以 在 导入
之前
/some/path/xyz.so通过其绝对路径导入。然后,您导入时,加载程序将发现它已经加载了,并且将使用已加载的模块,而不是再次搜索它。
__
x.so``x.so``xyz.so
C.如果您
x.so自己构建,则可以添加
-Wl,-rpath=/some/path到其链接行,然后导入
x.so将使加载程序在中查找依赖的模块
/some/path。



