gpt4 book ai didi

python - 使用 IPython 逐步调试

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

根据我的阅读,在 Python 中调试代码有两种方法:

  • 使用传统的调试器,例如 pdbipdb。这支持诸如 c for continuen for step-overs for step-into 等),但您无法直接访问 IPython shell,这对于对象检查非常有用。

  • 使用 IPython by embedding代码中的 IPython shell。您可以执行 from IPython import embed,然后在代码中使用 embed()。当您的程序/脚本遇到 embed() 语句时,您将进入 IPython shell。这允许使用所有 IPython 好东西来全面检查对象和测试 Python 代码。但是,当使用 embed() 时,您不能再通过方便的键盘快捷键逐步通过代码。

有没有什么方法可以结合两全其美?即

  1. 能够使用方便的 pdb/ipdb 键盘快捷键逐步完成您的代码。
  2. 在任何此类步骤(例如在给定语句上),都可以访问成熟的 IPython shell

IPython 调试 MATLAB:

可以在 MATLAB 中找到此类“增强调试”的示例,其中用户始终可以完全访问 MATLAB 引擎/shell,并且她仍然可以逐步-单步通过她的代码,定义条件断点等。根据我与其他用户的讨论,这是人们从 MATLAB 迁移到 IPython 时最怀念的调试功能。

在 Emacs 和其他编辑器中调试 IPython:

我不想让这个问题太具体,但我主要在 Emacs 中工作,所以我想知道是否有任何方法可以将这个功能引入其中。 理想情况下,Emacs(或编辑器)将允许程序员在代码的任何位置设置断点,并与解释器或调试器通信,让它停在您选择的位置,并带来完整的 IPython该位置的口译员。

最佳答案

ipdb.set_trace() 怎么样?在您的代码中:

导入ipdb; ipdb.set_trace()

更新:现在在 Python 3.7 中,我们可以编写 breakpoint()。它的工作原理相同,但它也服从 PYTHONBREAKPOINT 环境变量。此功能来自 this PEP .

这允许对您的代码进行全面检查,并且您可以访问诸如 c(继续)、n(执行下一行)、s 等命令(单步进入该方法)等等。

ipdb repoa list of commands . IPython现在称为(编辑:部分)Jupyter .


ps:请注意,ipdb 命令优先于 python 代码。所以为了编写 list(foo) 你需要 print(list(foo))!list(foo)

此外,如果您喜欢 ipython 提示符(它的 emacs 和 vim 模式、历史记录、完成...),您的项目很容易获得相同的提示符,因为它基于 python prompt toolkit .

关于python - 使用 IPython 逐步调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16867347/

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