gpt4 book ai didi

python - 异常时启动 IPython shell

转载 作者:IT老高 更新时间:2023-10-28 20:34:16 24 4
gpt4 key购买 nike

当我的程序运行引发异常的行时,有没有办法启动 IPython shell 或提示?

我最感兴趣的是上下文、变量以及引发异常的范围(和子范围)。类似于 Visual Studio 的调试,当抛出异常但未被任何人捕获时,Visual Studio 将停止并为我提供调用堆栈和每个级别存在的变量。

你认为有办法使用 IPython 获得类似的东西吗?

编辑: 启动 IPython 时的 -pdb 选项似乎没有达到我想要的效果(或者我可能不知道如何正确使用它,即完全有可能)。我运行以下脚本:

def func():
z = 2
g = 'b'
raise NameError("This error will not be caught, but IPython still"
"won't summon pdb, and I won't be able to consult"
"the z or g variables.")

x = 1
y = 'a'

func()

使用命令:

ipython -pdb exceptionTest.py

当出现错误时它会停止执行,但会给我一个 IPython 提示,我可以在其中访问脚本的全局变量,但不能访问函数 func 的局部变量。 pdb 仅在我直接在 ipython 中键入导致错误的命令时调用,即 raise NameError("This, sent from the IPython prompt, will tr​​igger pdb.") .

我不一定需要使用pdb,我只想访问func中的变量。

编辑 2: 已经有一段时间了,IPython 的 -pdb 选项现在正按我的意愿工作。这意味着当我引发异常时,我可以返回 func 的范围并毫无问题地读取其变量 zg。即使没有设置 -pdb 选项,也可以在交互模式下运行 IPython,然后在程序退出并出现错误后调用魔术函数 %debug - 这也会让你失望进入具有所有范围可访问性的交互式 ipdb 提示符。

最佳答案

更新 IPython v0.13 :

import sys
from IPython.core import ultratb
sys.excepthook = ultratb.FormattedTB(mode='Verbose',
color_scheme='Linux', call_pdb=1)

关于python - 异常时启动 IPython shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4234612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com