python subprocess.popen不尊重LD_LIBRARY_PATH

时间:2013-12-16 13:04:55

标签: python dll subprocess

我正在尝试使用python脚本中的以下代码从python中生成子进程:

p = subprocess.Popen(['./appleseed.cli', '--version'])

问题是该命令依赖于共享库,因此我收到以下错误

./appleseed.cli: error while loading shared libraries: libappleseed.so: cannot open shared object file: No such file or directory

我有系统PATH中的主二进制文件以及LD_LIBRARY_PATH中的lib,但这似乎没有帮助。这些设置在~/.bash_profile

有趣的是,如果我在交互式python会话中运行相同的代码,它也会工作,同时将命令指定为appleseed.cli,而./也不会起作用。

我正在运行ubuntu和python 2.7

更新

下面是我正在使用的完整python文件:

import argparse
import subprocess


def print_appleseed_version(args):

    p = subprocess.Popen(['./appleseed.cli', '--version'])


def main():
    # Parse the command line.
    parser = argparse.ArgumentParser()
    parser.add_argument("-t", "--tool-path", metavar="tool-path")
    args = parser.parse_args()

    print_appleseed_version(args)


if __name__ == '__main__':
    main()

我从命令行运行此代码,如下所示:

sudo python ../test.py -t appleseed.cli

0 个答案:

没有答案