Python - CalledProcessError: Command '[...]' returned non-zero exit status 127
Python - CalledProcessError: Command '[...]' returned non-zero exit status 127
我正在 Python 中使用 Bottle 开发微服务,我需要使用 .tex 文件生成 PDF。我正在使用子流程生成 PDF,但我一遍又一遍地收到相同的错误:
Traceback (most recent call last):
File "/Users/casa/Desktop/tesisform/bottle.py", line 763, in _handle
return route.call(**args)
File "/Users/casa/Desktop/tesisform/bottle.py", line 1577, in wrapper
rv = callback(*a, **ka)
File "tesis.py", line 114, in tesis_form
subprocess.check_call(["./runtex", texfname])
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 540, in check_call
raise CalledProcessError(retcode, cmd)
CalledProcessError: Command '['./runtex', u'111111']' returned non-zero exit status 127
我已经尝试了在 Stackverflow 中针对相同错误找到的所有解决方案,但是 none 似乎解决了我的问题。我的代码如下
@route('/pdf')
def tesis_form():
actn = request.query.actn
fname = "actas/"+actn + ".json"
with open(fname,"r") as f:
data = json.load(f)
tex = template('tesis-evaluation-tex', data)
tex = tex.encode('utf-8')
texfname = "%s" % (actn)
with open("tmp/"+actn+".tex","w") as f:
f.write(tex)
subprocess.check_call(["./runtex", texfname])
return static_file(actn+".pdf", root='tmp')
这是我的 runtex 文件
echo
cd tmp
pdflatex
如有任何帮助,我们将不胜感激
问题出在您的外部脚本 'runtex',而不是您的 Python 代码。它是 returning 状态 127;非零状态通常表示错误,并且您已要求子进程在非零状态下抛出异常(通过使用 check_call
),它做到了。
127 通常表示 "command not found",所以这里可能就是这种情况(尽管程序可以 return 127 出于其自身原因)。
如果这就是 runtex
中的全部内容,您可能应该:
- 添加 shebang 行:
#!/bin/sh
作为第一行
- 确保它有执行权限(
chmod +x runtex
)
脚本的退出状态是最后一条命令的退出状态,因此很可能在路径中找不到 pdflatex
。确保它已安装并在您的程序环境中 $PATH
!
我正在使用的计算机中没有 LaTeX 发行版。它返回错误 127,因为 runtex 中的 pdflatex 命令不起作用。即
bash: pdflatex: command not found
安装了 MacTeX,现在一切正常!
我正在 Python 中使用 Bottle 开发微服务,我需要使用 .tex 文件生成 PDF。我正在使用子流程生成 PDF,但我一遍又一遍地收到相同的错误:
Traceback (most recent call last):
File "/Users/casa/Desktop/tesisform/bottle.py", line 763, in _handle
return route.call(**args)
File "/Users/casa/Desktop/tesisform/bottle.py", line 1577, in wrapper
rv = callback(*a, **ka)
File "tesis.py", line 114, in tesis_form
subprocess.check_call(["./runtex", texfname])
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 540, in check_call
raise CalledProcessError(retcode, cmd)
CalledProcessError: Command '['./runtex', u'111111']' returned non-zero exit status 127
我已经尝试了在 Stackverflow 中针对相同错误找到的所有解决方案,但是 none 似乎解决了我的问题。我的代码如下
@route('/pdf')
def tesis_form():
actn = request.query.actn
fname = "actas/"+actn + ".json"
with open(fname,"r") as f:
data = json.load(f)
tex = template('tesis-evaluation-tex', data)
tex = tex.encode('utf-8')
texfname = "%s" % (actn)
with open("tmp/"+actn+".tex","w") as f:
f.write(tex)
subprocess.check_call(["./runtex", texfname])
return static_file(actn+".pdf", root='tmp')
这是我的 runtex 文件
echo
cd tmp
pdflatex
如有任何帮助,我们将不胜感激
问题出在您的外部脚本 'runtex',而不是您的 Python 代码。它是 returning 状态 127;非零状态通常表示错误,并且您已要求子进程在非零状态下抛出异常(通过使用 check_call
),它做到了。
127 通常表示 "command not found",所以这里可能就是这种情况(尽管程序可以 return 127 出于其自身原因)。
如果这就是 runtex
中的全部内容,您可能应该:
- 添加 shebang 行:
#!/bin/sh
作为第一行 - 确保它有执行权限(
chmod +x runtex
)
脚本的退出状态是最后一条命令的退出状态,因此很可能在路径中找不到 pdflatex
。确保它已安装并在您的程序环境中 $PATH
!
我正在使用的计算机中没有 LaTeX 发行版。它返回错误 127,因为 runtex 中的 pdflatex 命令不起作用。即
bash: pdflatex: command not found
安装了 MacTeX,现在一切正常!