Python函数subprocess.check_输出返回CalledProcessError:命令返回非零退出状态

2024-10-01 17:29:58 发布

您现在位置:Python中文网/ 问答频道 /正文

作为上一个问题的后续,我在WinPython中运行以下Python代码:

import os, subprocess
os.chdir("C:/Users/Mohammad/Google Drive/PhD/Spyder workspace/production-consumption/logtool-examples/")
logtoolDir="C:/Users/Mohammad/Google Drive/PhD/Spyder workspace/production-consumption/logtool-examples/ "
#processEnv = {'JAVA_HOME': 'C:/Program Files/Java/jdk1.8.0_66/'}
args = r'"org.powertac.logtool.example.ProductionConsumption D:/PowerTAC/Logs/2015/log/powertac-sim-1.state testrunoutput.data"'
subprocess.check_output(['mvn', 'exec:exec', '-Dexec.args=' + args],
                             shell = True, cwd = logtoolDir)

得到以下错误:

^{pr2}$

apachemaven可执行文件似乎没有运行。我的猜测是这些参数被错误地传递到程序中。我在argslogtoolDir参数中找不到任何打字错误,但可能我遗漏了一些东西?有什么想法吗?在

更新: mvn公司执行官:执行官未运行,因为check_output无法访问Windows的环境变量。我将path变量添加到processEnv中,现在check_output参数中的'mvn','--version'确认Maven的运行。可能我还没有定义目录,但是我还没有定义。在

干杯。在


Tags: output参数oscheck错误googleargsdrive
1条回答
网友
1楼 · 发布于 2024-10-01 17:29:58

问题解决了。基本上是:a)subprocess.check_output无法读取Windows的环境变量(例如PATH、javahome),所以我不得不重新定义我在processEnv中使用的环境变量,并在函数的参数中传递它。此外,b)变量args的定义不正确。我需要删除一组引号,并使用r将其原始化。在

更正代码:

logtoolDir='C:/Users/Mohammad/Google Drive/PhD/Spyder workspace/production-consumption/logtool-examples/'
processEnv = {'JAVA_HOME': 'C:/Program Files/Java/jdk1.8.0_66/jre/',
          'Path' : 'C:/Program Files/apache-maven-3.3.3/bin/'}
args = r"org.powertac.logtool.example.ProductionConsumption D:/PowerTAC/Logs/2015/log/powertac-sim-1.state testrunoutput2.data"
print(subprocess.check_output(['mvn', 'exec:exec', '-Dexec.args='+ args],
                           shell = True, env = processEnv, cwd = logtoolDir))

不幸的是,我无法找到使用shell = True参数的方法,这可能不是问题,因为它只用于数据分析。在

干杯。在

相关问题 更多 >

    热门问题