python3非零退出代码_当IPython遇到运行脚本的异常时,生成非零退出代码

本文讨论了在IPython环境中运行Python脚本时如何处理异常并获取非零退出代码。当使用IPython运行脚本时,异常会被捕获导致返回值为0,这与Python直接运行时不同。通过在IPython的最新开发版本中解决了一个issue,现在可以正确地返回非零退出代码来指示脚本执行失败。解决方案是创建一个虚拟环境并安装IPython的最新源代码。
摘要由CSDN通过智能技术生成

我想使用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

-------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值