繁体   English   中英

从 Jupyter Notebook 退出 pdb 交互模式

[英]Exit pdb Interactive Mode from Jupyter Notebook

pdb ,我使用交互命令进入交互模式(文档)。

这为我提供了pdb的 InteractiveConsole(我需要它来进行列表理解)。

在 Jupyter Notebook 中,如何在不完全退出调试器的情况下离开交互模式?

这个问题是完全相同的问题,但解决方案仅适用于终端。

  • Jupyter 中的ctrl + d只是添加了一个书签。
  • quit()返回NameError: name 'quit' is not defined

我可以做import sys; sys.exit() import sys; sys.exit() ,但这会完全退出调试器,这意味着我必须从头开始。

这是一个类似于 triccare 的解决方案,它不需要 Emacs。

在 Linux 上运行此命令:

echo '\x04' | xclip -selection clipboard

或 macOS 上的此命令:

echo '\x04' | pbcopy

然后粘贴到 Jupyter 中的 PDB 交互式提示中,然后按 Enter。

工作原理:这会将 ASCII 字符 0x04,“END OF TRANSMISSION”放到剪贴板上。 这个字符是一个“控制字符”,表示没有更多的输入,这会导致 PDB 交互会话结束。

一个独立于平台的方法(不需要终端或 Emac)来解决这个问题是使用pandas

  • 在交互式控制台中运行它:

    from pandas.io.clipboard import copy; copy("\\x04")

  • 然后ctrl + v (粘贴“传输结束字符”)和Enter

我成功的唯一方法是从另一个来源复制/粘贴 Crtl-D 字符。 我使用 Emacs,所以这很容易,但是任何允许您将 Crtl-D 插入到文档中的文本编辑器都应该可以工作。 插入后,使用标准复制/粘贴到 pdb 交互字段并点击 或 。 这应该让你出去。

对于Emacs,长路如下,为了演示目的:

M-x insert char <RET> END OF TRANSMISSION <RET>

此时,您应该在缓冲区中看到 ^D。 此时选择角色和 Mw 或 kill-ring-save 将其放在剪贴板上。

然后,切换到浏览器并使交互字段处于活动状态,然后将字符粘贴回去。 你不会看到任何东西。 然后打。 这应该/可能会让你出去。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM