如何在VS Code中调试导入的Jupyter笔记本?

时间:2019-01-24 16:40:09

标签: python visual-studio-code ipython

使用Python Extension for Visual Studio Code,您可以使用#%%在Python代码中定义代码单元:

#%%
a = 1
breakpoint()
b = 2

然后,您可以单击“运行单元”,VS Code将打开Python Interactive窗口并运行当前单元。不幸的是,如果您在上方运行单元格,则将由于breakpoint()行而失败。错误是:

StdinNotImplementedError: raw_input was called, but this frontend does not support input requests.

如果注释掉断点,它将运行但不会在断点处停止:

#%%
a = 1
#breakpoint()
b = 2

如果删除特殊的“运行单元格”注释,它将在断点处停止,但随后您将失去Python Interactive:

a = 1
breakpoint()
b = 2

通过在Visual Studio代码中单击装订线以添加断点来替换断点,可以(两种)兼得两者:

Showing breakpoint

但是我更喜欢用代码编写断点。有关支持此案的任何想法?

1 个答案:

答案 0 :(得分:1)

我刚刚发现了这个被低估的库xdbg。我在Python 3.7上运行了一些烦人的异常,但是在VS Code中的交互模式下,它运行良好。

除了使用classic Python debugger in VS Code运行导入的Notebook外,我认为xdbg是一个有趣的选择。请注意,在交互模式下工作时,基本上是在构建Python脚本,因此您可以非常简单地使用调试器。唯一的缺点是,每次运行调试器时,脚本都是从头开始的(如果启动脚本加载大量数据,可能会很烦人。)

我很想在VS Code中为交互式Python控制台提供调试选项,但似乎他们还不支持它。

希望这会有所帮助。