Python-CalledProcessError:命令“ [...]”返回非零退出状态127

时间:2018-09-04 21:08:39

标签: python python-2.7 bottle

我正在使用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中针对同一错误找到的解决方案,但是似乎没有一个解决方案可以解决我的问题。我的代码如下

@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 $1
cd tmp
pdflatex $1

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

问题出在您的外部脚本“ runtex”中,而不是您的Python代码中。返回状态127;非零状态通常表示错误,并且您已要求子进程对非零状态抛出异常(通过使用check_call),所以确实如此。

127通常表示“未找到命令”,因此这里可能就是这种情况(尽管程序可能由于其自身的原因而返回127)。

如果这就是runtex中的全部内容,则您应该:

  • 添加shebang行:#!/bin/sh作为第一行
  • 确保它具有执行权限(chmod +x runtex

脚本的退出状态是最后一条命令的退出状态,因此似乎在路径中找不到pdflatex。确保已安装该程序并将其安装在程序环境中的$PATH上!

答案 1 :(得分:0)

我正在使用的计算机上没有LaTeX发行版。由于runtex中的pdflatex命令不起作用,因此返回错误127。即

bash: pdflatex: command not found

已安装MacTeX,现在一切都像灵符一样工作!