如何调试从Jupyter/IPython笔记本运行的外部.py函数
我的Jupyter/IPython笔记本在外部.py中执行函数 我需要在这些函数中设置断点,检查变量,单步等等 使用如何调试从Jupyter/IPython笔记本运行的外部.py函数,python,debugging,ipython,jupyter-notebook,spyder,Python,Debugging,Ipython,Jupyter Notebook,Spyder,我的Jupyter/IPython笔记本在外部.py中执行函数 我需要在这些函数中设置断点,检查变量,单步等等 使用print语句和抛出异常的组合来提前退出单元格是不实际的 我需要一些工作流程 是否可以连接一些第三方编辑器/IDE来查看.py,并以某种方式将其连接到Jupyter/IPython正在使用的Python运行时 因此,如果我使用IDE在external.py中设置断点,并在笔记本中执行遇到该断点的单元格,我可以继续从IDE中手动导航 编辑:我找到了 编辑 是否可以连接一些第三方编辑器
print
语句和抛出异常的组合来提前退出单元格是不实际的
我需要一些工作流程
是否可以连接一些第三方编辑器/IDE来查看.py,并以某种方式将其连接到Jupyter/IPython正在使用的Python运行时
因此,如果我使用IDE在external.py中设置断点,并在笔记本中执行遇到该断点的单元格,我可以继续从IDE中手动导航
编辑:我找到了
编辑
是否可以连接一些第三方编辑器/IDE来查看.py
并以某种方式将其连接到Jupyter/IPython正在使用的Python运行时
是的,这是可能的
作为第三方Python IDE使用。
您可以使用iPython运行时并排打开文件。可以使用快捷键将外部文件中的定义直接发送到提示符,并使用标准python调试器pdb从iPython提示符设置断点、单步执行和检查变量
自动完成工作良好。只需编写import XXX
即可使Emacs了解XXX
模块中的所有功能
以下是一个示例屏幕截图:
以下是我进入截图的步骤。*
C-C-p
启动iPython进程并将文件连接到该进程。请注意,iPython进程功能齐全。我可以调用它的所有神奇方法M-mdb
将断点包含在我想要的行中(以pdb导入的形式)C-M-x
以将定义发送到iPython提示符。请注意,在屏幕截图中,我正在调用unique\u everseed
,但从未在提示符中键入它。定义是直接从文件发送的(这就是为什么我们有一个空单元格,作为Emacs做了一些事情的视觉反馈)n
进入下一条指令iPython notebook
从任何终端打开iPython notebook服务器,并调用函数ein:notebooklist
更多信息可在项目页面和Spacemacs iPython笔记本层页面中找到
特别是,从EIN文档中:
屏幕截图在Jupyter中,您可以通过在下面添加两行作为断点来使用python调试器
import pdb
pdb.set_trace()
代码执行将在此步骤暂停,并为调试python代码提供文本框。我附上了相同的截图
除了打印变量外,您还可以参考pdb了解可以执行的操作
我们刚刚发布了Jupyter笔记本电脑Python可视化调试器的第一个版本,这可能会引起人们的兴趣。您可以找到详细信息。
(免责声明:我是首席开发人员)我能够获得PTV的这种调试体验,但注意到一个小麻烦:感谢这个信息丰富的答案。不幸的是,我需要一个IPython笔记本的解决方案,而不仅仅是IPython。@Pi您的问题要求提供一个将.py文件链接到IPython内核的解决方案。这就是我提供的。无论如何,我已经将解决方案扩展到笔记本电脑。这不是一个很好的答案,因为如果你想调试笔记本电脑从另一个文件调用的代码,你必须进入并编辑该代码。最好有一个等价的
b library.py:22
,可以在Jupyter中使用,而不必编辑library.py
。