我有以下脚本utils/pdf2image.sh
#!/bin/bash
pdftoppm -png $1 $2下面是Python代码的以下片段:
script_path = os.path.join(os.getcwd(), 'utils', 'pdf2image.sh') + ' ' + invoice_path + ' ' + invoice_path[:-4]
subprocess.call(script_path, shell=True)当我在命令行中调用脚本时,它会工作,但是当我从Python调用它时,它不会工作,这意味着pdftoppm不能工作。我检查并安装了poppler-utils。我怀疑从Python环境中看不到pdftoppm。知道为什么吗?
发布于 2021-05-18 16:30:42
用户的PATH和脚本的PATH不一定是相同的,因此从pdftoppm脚本内部调用的BASH脚本似乎不知道pdftoppm在哪里。
你有两个选择:
pdftoppm的完整路径:#!/bin/bash
/usr/bin/pdftoppm -png $1 $2pdftoppm脚本调用pdftoppm:script_path = os.path.join(os.getcwd(), 'utils', 'pdf2image.sh') + ' ' + invoice_path + ' ' + invoice_path[:-4]
subprocess.Popen(['/usr/bin/pdftoppm', '-png', invoice_path, invoice_path[:-4]])发布于 2021-05-18 16:32:02
根据我对您的问题的理解,Python代码无法找到pdftoppm。如果这个二进制文件不存在于$PATH中,就会发生这种情况。
我建议使用pdftoppm的绝对路径,如果这个shell脚本是这样的话,然后尝试从那个shell脚本调用这个shell脚本。
尽管正如对您的问题的评论已经指出的那样,脚本的部分工作可以通过子流程本身来完成,但是您也应该尝试:)
https://stackoverflow.com/questions/67590115
复制相似问题