我的Jupyter / IPython笔记本在外部.py中执行函数。
我需要在这些函数中设置断点,检查变量,单步等等。
使用print
语句和抛出异常来提前退出单元格是不切实际的。
我需要某种工作流程。
是否可以连接一些第三方编辑器/ IDE来查看.py并以某种方式将其连接到Jupyter / IPython使用的Python运行时?
因此,如果我使用我的IDE在外部.py中设置断点并在笔记本中执行遇到所述断点的单元格,我可以继续在IDE中手动导航。
编辑:我找到了https://pypi.python.org/pypi/ipdb https://www.quora.com/What-are-your-favorite-tricks-for-IPython-Notebook
编辑https://www.youtube.com/watch?v=Jb2HHOahvcE< - 此视频已接近我所追求的内容,我只是不太清楚如何将它们放在一起。该视频演示了spyder,这是一个带有IPython提示的IDE ...我想知道是否可以通过提示运行我的笔记本并调试它。
编辑:看起来好像PyCharm正是我所追求的:https://www.jetbrains.com/help/pycharm/2016.1/tutorial-using-ipython-jupyter-notebook-with-pycharm.html
编辑:我正在试图让PyCharm表现得好。如果我把它整理出来,我会在答案中提供详细信息。答案 0 :(得分:5)
是否可以连接某些第三方编辑器/ IDE来查看.py 并以某种方式将它连接到Python运行时Jupyter / IPython正在使用?
是的,可能。
您可以与iPython运行时并行打开文件。可以使用关键快捷方式将外部文件中的定义直接发送到提示,并使用标准python调试器pdb从iPython提示中设置断点,单步和检查变量。
自动完成工作正常。只需编写import XXX
,即可让Emacs了解XXX
模块中的所有函数。
这些是我按照屏幕截图查看的步骤。*
C-c C-p
以启动iPython进程并将文件连接到。请注意,iPython进程功能齐全。我可以在上面调用所有魔术方法。M-m m d b
包含断点(以pdb导入的形式)C-M-x
至将定义发送至iPython提示。请注意我在调用unique_everseen
时没有在提示符中键入它的屏幕截图。定义是直接从文件中发送的(这就是为什么我们有一个空单元格2,作为Emacs做的事情的视觉反馈)。n
到跳到下一个指令。现在,我甚至没有看到Emacs可以提供的表面。 如果您对此感兴趣,我建议您进行调查。它非常强大,拥有一个伟大的,非常有用的和活跃的社区。 p>
要让所有Python配置开箱即用而无需自行配置,只需安装Spacemacs,这是一个流行的Emacs发行版(anaconda是Python,Spacemacs是Emacs)。安装说明可在链接下找到。
使用Emacs编辑iPython笔记本。
一个名为EIN(Emacs iPython Notebooks)的软件包“在Emacs中提供了一个IPython Notebook客户端和集成的REPL。”
要使其正常工作,请使用ipython notebook
从任何终端打开iPython笔记本电脑服务器,并调用函数ein:notebooklist
。
更多信息可以在项目页面here下找到,也可以在Spacemacs iPython-Notebook图层页面here下找到。
特别是来自EIN文档:
上述iPython +文件工作流程的所有功能都适用于iPython笔记本(* .ipynb)。
屏幕截图here.
答案 1 :(得分:4)
在Jupyter中,您可以通过在断点下面添加两行来使用python调试器。
import pdb
pdb.set_trace()
代码执行将在此步骤暂停,并为您提供调试python代码的文本框。我已附上截图。
除了打印变量之外,您可以参考pdb documentation执行的操作
答案 2 :(得分:1)
我们刚刚发布了可能感兴趣的Jupyter笔记本的第一版Python Visual Debugger。您可以找到详细信息here (免责声明:我是首席开发人员)