gan*_*123 17 python debugging jupyter-notebook
在 中pdb,我使用交互命令进入交互模式(文档)。
这给了我一个 InteractiveConsole pdb(我需要它来做列表理解)。
在 Jupyter Notebook 中,如何在不完全退出调试器的情况下离开交互模式?
这个问题是完全相同的问题,但解决方案仅适用于终端。
quit()返回NameError: name 'quit' is not defined我可以import sys; sys.exit(),但这会完全退出调试器,这意味着我必须从头开始。
解决此问题的一种与平台无关的方法是使用pandas(不需要终端或 Emac):
from pandas.io.clipboard import copy; copy("\x04")
Run Code Online (Sandbox Code Playgroud)
这是一个类似于 triccare 的解决方案,它不需要 Emacs。
在 Linux 上运行此命令:
echo '\x04' | xclip -selection clipboard
Run Code Online (Sandbox Code Playgroud)
或 macOS 上的此命令:
echo '\x04' | pbcopy
Run Code Online (Sandbox Code Playgroud)
然后粘贴到 Jupyter 中的 PDB 交互式提示中,然后按 Enter。
工作原理:这会将 ASCII 字符 0x04,“END OF TRANSMISSION”放到剪贴板上。这个字符是一个“控制字符”,表示没有更多的输入,这会导致 PDB 交互会话结束。
小智 1
我成功的唯一方法是从另一个来源复制/粘贴 Crtl-D 字符。我使用 Emacs,所以这相当简单,但是任何允许您在文档中插入 Crtl-D 的文本编辑器都应该可以工作。插入后,使用标准复制/粘贴到 pdb 交互字段中,然后点击 或 。这应该能让你出去。
对于 Emacs,为了演示目的,长方法如下:
M-x insert char <RET> END OF TRANSMISSION <RET>
Run Code Online (Sandbox Code Playgroud)
此时您应该在缓冲区中看到 ^D。此时选择角色和Mw或kill-ring-save将其放入剪贴板。
然后,切换到浏览器并激活交互字段,然后将字符粘贴回来。你不会看到任何东西。然后打。这应该/可能会让你出去。