如何在运行时更新此环境变量,以便 ctypes 可以在任何地方加载库?我尝试了以下方法,但似乎都不起作用。
from ctypes import *
os.environ['LD_LIBRARY_PATH'] = "/home/starlon/Projects/pyCFA635/lib"
os.putenv('LD_LIBRARY_PATH', "/home/starlon/Projects/pyCFA635/lib")
lib = CDLL("libevaluator.so")
最佳答案
当诸如 Python 之类的程序运行时,动态加载器(ld.so.1 或类似的东西)已经读取了 LD_LIBRARY_PATH 并且此后不会注意到任何更改。因此,除非 Python 软件本身评估 LD_LIBRARY_PATH 并使用它为 dlopen()
或要使用的等效函数构建库的可能路径名,否则在脚本中设置变量将无效。
鉴于您说它不起作用,假设 Python 没有构建并尝试所有可能的库名称似乎是合理的;它可能仅依赖于 LD_LIBRARY_PATH。
关于python - 在运行时为 ctypes 更改 LD_LIBRARY_PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/856116/