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()