cmd = "sh compile_regression_vcs.sh"
try:
self.agent.run_commands(cmd, pwd=self.agent.test_dir, extra_env=env)
except TestException as e:
s = traceback.format_exc()
serr = "there were errors:\n%s\n" % (s)
self.logger.info(serr)
raise TestException("Could not compile RTL")
except IOError as e:
raise TestException("Could not compile RTL: %s" % str(e))
输出如下:
TestException: command 'sh' generated 2 errors, aborting.
当我在没有python的情况下单独运行sh命令时,我不会得到任何错误。我不明白为什么python会出现异常
答案 0 :(得分:2)
请改为尝试:
/bin/sh compile_regression_vcs.sh
当前目录中的compile_regression_vcs.sh是什么?
答案 1 :(得分:2)
问题可能主要是shell和shell脚本的路径。 也可能是您在shell中运行的环境可能与您在python脚本中使用的环境不同。检查一下:extra_env = env
如果仍然无法解决问题,可以使用以下选项进一步调试:
您可能希望在脚本中使用某些调试来查看确切的错误。 使用sys.exc_info()是查看堆栈详细信息的好选择。
您可以在异常块中使用这段代码:
import sys
tb = sys.exc_info()[2]
lst = format_list(extract_stack())
for l in lst: print l,
或者您可以使用:
import traceback
traceback.print_exc()
更清洁:)
您还可以运行python调试器来调试run_commands正在按预期执行。 只需将这些代码行放在try块中,您就可以进入交互式python调试器模式。
try:
import pdb
pdb.set_trace()
self.agent.run_commands(cmd, pwd=self.agent.test_dir, extra_env=env)
您可以稍后在python调试器模式中键入帮助以查看所有可用选项。 参考: pdb
您还可以使用检查模块: inspect module