众所周知,利用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"})