debugging 从Jupyter笔记本退出pdb交互模式

vaqhlq81  于 2022-11-14  发布在  其他
关注(0)|答案(3)|浏览(172)

pdb中,我使用interact命令进入交互模式(documentation)。
这将在pdb中提供一个InteractiveConsole(我需要它来进行列表理解)。
在Jupyter Notebook中,如何在不完全退出调试器的情况下离开交互模式?
这个question是完全相同的问题,但解决方案只能在终端上工作。

  • 在Jupyter中使用ctrl+d可以添加一个书签。
  • quit()则返回NameError: name 'quit' is not defined

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

nbysray5

nbysray51#

这里有一个类似triccare的解决方案,它不需要Emacs。
在Linux上运行以下命令:

echo '\x04' | xclip -selection clipboard

或在macOS上执行以下命令:

echo '\x04' | pbcopy

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

czq61nw1

czq61nw12#

解决此问题的一种平台无关的方法是使用pandas(不需要终端或Emac):

  • 在交互式控制台本身中运行以下命令:
from pandas.io.clipboard import copy; copy("\x04")
  • 然后按ctrl+v粘贴“传输结束字符”并按Enter键。
cld4siwp

cld4siwp3#

我 成功 的 唯一 方法 是 从 另 一 个 源 复制/粘贴 Crtl-D 字符 。 我 使用 Emacs , 所以 这 是 相当 容易 的 , 但是 任何 允许 您 将 Crtl-D 插入 到 文档 中 的 文本 编辑 器 都 应该 可以 工作 。 一旦 插入 , 使用 标准 的 复制/粘贴 到 pdb interact 字段 中 , 然后 点击 或 。 这 应该 可以 让 您 退出 。
对于 Emacs , 长 路径 如下 所 示 ( 出于 演示 目的 ) :

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

中 的 每 一 个
此时 你 应该 会 在 缓冲 区 中 看到 ^ D 。 此时 选择 该 角色 , 然后 M-w 或 kill-ring - save 将 其 放到 剪贴 板 中 。
然后 , 切换 到 浏览 器 , 激活 交互 域 , 并 将 角色 粘贴 回去 。 你 不会 看到 任何 东西 。 然后 点击 。 这 应该/可能 会 让 你 离开 。

相关问题