python subprocess模块设置环境变量,加载动态库

众所周知,利用python的subprocess.pOpen 可以执行应用程序。

不过今天碰到一个问题:应用程序需要调用动态库,而且动态库和应用程序在同一目录下。不过python的运行目录不是应用程序所在目录,这时候执行会出错

error while loading shared libraries: libdyn.so: cannot open shared object file: No such file or directory。

这是因为应用程序在python当前运行目录及系统的LD_LIBRARY_PATH指定路径下, 都没有找到libdyn.so,所以报错了。

解决方法:

subprocess.pOpen函数设置env参数,传递正确的 LD_LIBRARY_PATH。

subprocess.pOpen("bin/linux/release/a.exe", shell=True, env={"LD_LIBRARY_PATH": "bin/linux/release"})

你可能感兴趣的:(Python,python)