[英]Python function subprocess.check_output returns CalledProcessError: command returns non-zero exit status
[英]Python Subprocess returns non-zero exit status only in cron
我有一个 Python 脚本,它管理一系列CasperJS任务并处理结果。 它从命令行运行良好,但是当我在 cron 中运行脚本时,出现错误:
CalledProcessError: Command '['/path/to/casperjs', '/path/to/doSomething.js', 'args']' returned non-zero exit status 1
在 Python 中,我调用 CasperJS:
response = subprocess.check_output(['/path/to/casperjs', '/path/to/doSomething.js', 'args'], shell=True)
我也尝试过shell=False
和Popen
,但我得到了相同的结果。 我还尝试将整个命令设为字符串(而不是列表),但这也无济于事。
运行'/path/to/casperjs /path/to/doSomething.js args'
在 shell 中运行时返回退出代码 0。
我还将PATH=/usr/bin:/bin:/sbin:/usr/local/bin
添加到我的 crontab 中,但无济于事。 (正如这个问题中所建议的那样。)
知道为什么我只在 cron 中收到此错误吗? 谢谢!!
编辑:根据下面的答案,设置shell=False
和stderr=subprocess.STDOUT
使一切正常......
除了 stdout 之外,您还应该尝试捕获 stderr,以便您可以准确找出程序失败的原因(假设它确实为您打印了一些错误)
cmd = ['/path/to/casperjs', '/path/to/doSomething.js', 'args']
response = subprocess.check_output(cmd,
shell=True,
stderr=subprocess.STDOUT)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.