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

Python 从Jupyter笔记本退出pdb交互模式,python,debugging,jupyter-notebook,Python,Debugging,Jupyter Notebook,在pdb中,我使用interact命令进入交互模式() 这给了我一个pdb中的交互式控制台(我需要它来理解列表) 在Jupyter笔记本中,如何在不完全退出调试器的情况下离开交互模式 这是完全相同的问题,但解决方案仅在终端上起作用 Jupyter中的ctrl+d只添加了一个书签 和quit()返回name错误:未定义名称“quit” 我可以做导入系统;sys.exit(),但这将完全退出调试器,这意味着我必须从头开始。我成功的唯一方法是从另一个源复制/粘贴Crtl-D字符。我使用Emacs,

pdb
中,我使用interact命令进入交互模式()

这给了我一个
pdb
中的交互式控制台(我需要它来理解列表)

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

这是完全相同的问题,但解决方案仅在终端上起作用

  • Jupyter中的ctrl+d只添加了一个书签
  • quit()
    返回
    name错误:未定义名称“quit”

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

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

对于Emacs,为了演示,其漫长的道路如下所示:

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

M-x插入字符传输结束
此时,您应该在缓冲区中看到^D。此时,选择角色和M-w或kill ring save以将其放在剪贴板上


然后,切换到浏览器并激活交互字段,然后将角色粘贴回。你什么也看不到。然后打。这应该/可能会让你摆脱困境。

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

在Linux上运行此命令:

echo '\x04' | xclip -selection clipboard
或在macOS上执行以下命令:

echo '\x04' | pbcopy
然后粘贴到Jupyter中的PDB交互提示中,然后按enter键


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

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

  • 在交互控制台本身中运行此操作:

    从pandas.io.clipboard导入副本;复制(“\x04”)

  • 然后按ctrl+v(粘贴“传输结束字符”)并输入


我在Python问题跟踪器上提交了一个bug,要求添加一个命令以退出PDB InteractiveConsole: