我想使用IPython运行python脚本,并能够判断该脚本是成功(一直运行)还是不成功(引发异常).
通常,可以通过检查命令的返回值来判断命令是否成功,其中约定为0表示成功,而其他整数表示错误(该值指示哪个错误).这是使用python script.py运行脚本时的行为,但是使用ipython script.py时,IPython自动捕获错误,并(无用)返回退出代码0.
使用IPython运行脚本时如何禁用此行为?
顺便说一句,我需要在IPython中而不是在Python中运行脚本,因为该脚本是从IPython笔记本(.ipynb)生成的,并且包含一些IPython魔术命令.
这是一个最小的工作示例.
fail.py
#! /usr/bin/env python
mytext = 'Hello World!'
if __name__=="__main__":
print(missing_variable)
当使用IPython运行脚本时,将异常打印到stdout,并且返回值为1,正确表示脚本失败.
~$python fail.py
Traceback (most recent call last):
File "fail.py", line 4, in
print(missing_variable)
NameError: name 'missing_variable' is not defined
~$echo $?
1
当使用IPython运行脚本时,将捕获异常并将回溯打印到stdout,然后IPython退出并返回0(这是不希望的,因为脚本未成功).
~$ipython fail.py
-------------------------