在异常情况下启动IPython Shell - python

当我的程序运行引发异常的行时,是否可以启动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的局部变量。仅当我在ipython中直接键入导致错误的命令pdb时,才会调用raise NameError("This, sent from the IPython prompt, will trigger 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)

Shell脚本如何从自身内部执行另一个Shell脚本 - python

我的问题是,shell脚本如何执行在新进程中生成的另一个shell脚本?还是在与调用它的脚本相同的过程中执行?一个示例是一个Python脚本,该脚本在满足条件后从Shell脚本执行,还有人如何编写此Shell脚本,使其生成Python脚本,然后退出自身而不会杀死Python脚本 python大神给出的解决方案 是的,如果您在外壳程序中调用外壳程序脚本,外壳程…

在python中调用Shell命令 - python

我需要在python中执行shell命令,并将结果存储到变量中。我该怎么做。我需要执行openssl rsautl -encrypt -inkey key并将结果转换为变量。 - -编辑 - -我该如何执行  perl -e'打印“ hello world” openssl rsautl -encrypt -inkey密钥在python中并获取输出。 参考方…

以一定比例将图像裁剪到最大的中心部分 - python

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current fo…

将变量从python脚本传递到bash脚本 - python

目前正在尝试将参数从python脚本传递到我创建的bash脚本。如何从python脚本到bash脚本获取用户输入?这是我的python脚本“ passingParameters.py”的代码,我曾尝试将变量(循环)发送到bash脚本。我已经通过将输出发送到另一个用于读取输入的python脚本来测试了此python脚本(在我调整了代码之后)。loop = st…

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…