gpt4 book ai didi

python - subprocess.check_output 因错误 127 而失败

转载 作者:太空狗 更新时间:2023-10-30 01:22:52 25 4
gpt4 key购买 nike

我试图从我的 python 应用程序调用外部程序,但它没有显示任何输出并且失败并显示错误 127。从命令行执行命令工作正常。 (我在正确的工作目录中)

def buildContris (self, startUrl, reportArray):
urls = []

for row in reportArray:
try:
url = subprocess.check_output(["casperjs", "casper.js", startUrl, row[0]], shell=True)
print (url)
urls.append(url)
break
except subprocess.CalledProcessError as e:
print ("Error: " + str(e.returncode) + " Output:" + e.output.decode())

return urls

每次循环都会输出如下错误:(我也检查了e.cmd,是正确的,但是很长,所以我在这个例子中省略了它)

Error: 127 Output: 

解决方案:

下面的代码有效

app = subprocess.Popen(["./casperjs/bin/casperjs", "casper.js", startUrl, row[0]], stdout=subprocess.PIPE, stderr=subprocess.PIPE, env = {"PATH" : "/usr/local/bin/:/usr/bin"}, universal_newlines=True)
app.wait()
out, errs = app.communicate()

最佳答案

尝试在 subprocess.check_output() 调用中添加 casperjs 的完整路径。

编辑:回答您的第二个问题。对于我在 iPad 上的格式化,我深表歉意。我认为您应该尝试 Popen 而不是 check_output 以便您可以指定环境变量:

p = subprocess.Popen(["/path/to/casperjs", "casper.js", startUrl, row[0]], env={"PATH": "/path/to/phantomjs"})
url, err = p.communicate()

关于python - subprocess.check_output 因错误 127 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18649549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com