我有一个从 python 调用 shell 脚本的程序。在 shell 脚本中,我像这样添加到 LD_LIBRARY_PATH,指向 mdbtools 中的 .so。
NEWPATH=${PWD}"/mdbtools/usr/lib/x86_64-linux-gnu"
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$NEWPATH
我很确定这部分代码是正确的。然后,我使用输入中的变量调用 .so 中的一个程序,“mdb-export”,就像这样。:
mdb-export ${1} Athlete > "${2}athlete.csv"
这是令人困惑的部分。当我从命令行调用脚本时
./buildscvs abcd.mdb 1234
它完美地工作。csvs 按预期填充。但是,当我从 python 调用脚本时:
try:
p = Popen([cmd, filename, prepend], stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True).communicate()[0]
print "p", p
except Exception as e:
print str(e)
cmd、文件名和前置如下
filename = /app/djangoFiles/meetPlanner/2011ROXBURY.mdb
cmd = /app/djangoFiles/meetPlanner/buildcsvs.sh
prepend = 824365891
csvs出来空白。这似乎与您运行具有未知程序名称的命令时发生的情况一致,例如我运行
abcd 1234.mdb > test.csv
有谁知道发生了什么?我非常感谢你能给我的任何帮助
谢谢!
编辑
更改为 subprocess.check_call() 后
如下所示,我现在收到以下错误消息:
/mdb-export: error while loading shared libraries: libmdb.so.2: cannot open shared object file: No such file or directory