【问题标题】:Exit pdb Interactive Mode from Jupyter Notebook从 Jupyter Notebook 退出 pdb 交互模式
【发布时间】:2018-05-11 08:43:39
【问题描述】:
在pdb内,我使用interact命令进入交互模式(documentation)。
这给了我一个 pdb 内的 InteractiveConsole(我需要它来进行列表理解)。
在 Jupyter Notebook 中,如何在不完全退出调试器的情况下退出交互模式?
这个question 是完全相同的问题,但解决方案只能在终端上工作。
-
Jupyter 中的 ctrl+d 只是添加一个书签。
-
quit() 返回NameError: name 'quit' is not defined
我可以做import sys; sys.exit(),但这会完全退出调试器,这意味着我必须从头开始。
【问题讨论】:
标签:
python
debugging
jupyter-notebook
【解决方案1】:
一种独立于平台的方法(不需要终端或 Emac)来解决这个问题是使用pandas:
【解决方案2】:
这是一个类似于 triccare 的解决方案,不需要 Emacs。
在 Linux 上运行此命令:
echo '\x04' | xclip -selection clipboard
或者 macOS 上的这个命令:
echo '\x04' | pbcopy
然后粘贴到 Jupyter 中的 PDB 交互式提示符中并按回车键。
这是如何工作的:这会将 ASCII 字符 0x04,“END OF TRANSMISSION”,放到您的剪贴板上。该字符是一个“控制字符”,表示没有更多输入,这会导致 PDB 交互会话结束。
【解决方案3】:
我成功的唯一方法是从另一个来源复制/粘贴 Crtl-D 字符。我使用 Emacs,所以这相当容易,但是任何允许您将 Crtl-D 插入文档的文本编辑器都应该可以工作。插入后,使用标准复制/粘贴到 pdb 交互字段并点击 or 。这应该能让你离开。
对于 Emacs,长路如下,用于演示目的:
M-x insert char <RET> END OF TRANSMISSION <RET>
此时您应该在缓冲区中看到 ^D。此时选择角色和 M-w 或 kill-ring-save 将其放在剪贴板上。
然后,切换到浏览器并激活交互字段,然后将字符粘贴回去。你不会看到任何东西。然后打。这应该/可能会让你出局。