Python 无法使用代码运行子进程,commond在终端上工作

Python 无法使用代码运行子进程,commond在终端上工作,python,python-3.x,subprocess,libreoffice,headless,Python,Python 3.x,Subprocess,Libreoffice,Headless,我正在使用LibreOffice从.docx文件生成一个PDF。这是我的子进程命令: output = subprocess.call('libreoffice --headless --convert-to pdf:writer_pdf_Export' + out_folder + ' ' + input_docx + ' -env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}',shell=True) 当我在终端上

我正在使用
LibreOffice
.docx
文件生成一个
PDF
。这是我的子进程命令:

output = subprocess.call('libreoffice --headless --convert-to pdf:writer_pdf_Export' + out_folder + ' ' + input_docx + ' -env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}',shell=True) 

当我在终端上运行此命令时,
PDF
正在正确生成,但当我调用此子进程时。它给出了
127错误代码

使用下面的代码,您可以得到预期的结果

import subprocess

out_folder = '/var/www/html/SocketQueue'
input_docx='/home/dhamo/Downloads/CNGroup_estimates.docx'
subprocess.call(['libreoffice', '--headless', '--convert-to','pdf:writer_pdf_Export', '--outdir', out_folder, input_docx,
'-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}'])

它可能不知道libreoffice在哪里,把它全部说出来path@Nullman我已经尝试过完整的libreoffice路径。我认为{USER}可能是个问题,因为它需要根用户权限,而且在我的代码中,用户是空的。为什么不在调用之前替换用户呢?您可以从
os.environ['USER']
获取当前用户。我已经按照您的建议提供了root用户,但仍然存在此错误。你有什么想法或计划吗?我已经试过预览生成器了。我的所有代码都在本地正常工作,但在我的服务器和AWS上不能正常工作。请尝试在子流程中添加libreoffice的完整路径。这是我遇到的错误,但我的libreoffice路径为“/usr/sbin/libreoffice”但是它说找不到我的路径“/usr/sbin/libreoffice:46:/usr/sbin/libreoffice:dirname:notfound\n/usr/sbin/libreoffice您正在运行哪个环境??无论是本地环境还是远程环境??Ubuntu 18.04。我在本地机器和我的一台服务器上有安装代码。在我本地的机器里,它在工作。在我的服务器上,我有两个应用程序,其中一个是pdf生成代码,另一个是无效的。我的问题现在已经解决了。我已从gunicorn服务中删除路径。:)