python - 在运行时为 ctypes 更改 LD_LIBRARY_PATH

标签 python ctypes

如何在运行时更新此环境变量,以便 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/

相关文章:

python - 使用 ctypes 在 python 中调用 c 函数

python - 使用 ctypes 和 SSE/AVX 有时会出现段错误

python - Discord 机器人帮助命令

尽管有 16gb 交换,Python 仍会引发内存错误

python - 在switch-case语句(python)中为每种情况添加多行

python - 使用 NLTK 出现错误 : unsupported operand type(s) for *: 'NoneType' and 'int'

ctypes 中的 python 和 cdll。不能使用 printf

python - 将 numpy 集成到 Meteorjs Web 应用程序中的最佳方法是什么?

python - 在带有 ctypes 的 cuda 分配内存上使用 python 句柄

python - MacOS Big Sur - Python ctypes find_library 找不到库(ssl、CoreFoundation 等)