神器 jupyter,终于来了!

来源:机器之心
本文约2000字,建议阅读5分钟

以后 Jupyter 也能做可视化 Debug,Jupyter 团队发布第一个 Debug 插件与内核。

Python 代码编辑器怎么选?PyCharm、VS Code、Jupyter Notebook 都各有特色,Jupyter 适合做数据分析这些需要可视化的操作,PyCharm 更适合做完整的 Python 项目。然而,因为交互式操作,很少会有开发者想到用 Jupyter 做 Debug。
尽管很多读者可能认为 Jupyter 用来做展示和小型试验就足够了,Debug 并没有太大的需求,但弥补上 Jupyter 缺失的一环,能让它更好用,未来 Debug 也会作为默认模式。
为什么 Jupyter 需要 Debug?
Jupyter 这种工具虽然有很好的交互性能,但其也明白,对于大型代码库,最好还是用传统的 IDE 比较靠谱。因此为了弥补这一缺陷,Jupyter 项目在过去几年也希望通过 JupyterLab 来加强对大型代码库的处理过程。
然而,JupyterLab 还是有一大缺陷,它不能通过可视化的方式进行 Debug,这限制了进一步的调试。这几天,Jupyter 团队表示,经过几个月的开发,他们很高兴能第一次发布 Jupyter 可视化 Debugger。
虽然这只是第一版,但目前已经可以设置常见的断点 Debug,查看各种变量、执行模块等信息。
新工具的用法也很简单,很常见的 Debug 方式差不多。如果读者想要安装这个新工具,那么首先你需要为 JupyterLab 装前端插件:
jupyter labextension install @jupyterlab/debugger
至于后端 Kernel,Jupyter 团队表示目前 kernel 需要实现 Jupyter Debug Protocol,因此暂时只能用xeus-python:
conda install xeus-python -c conda-forge


只要装好前端与后端,我们就可以直接使用了。开发者还提供了 Debug 的线上体验版,不需要安装任何东西就能体验。
在线 Debug 环境:
https://hub.gke.mybinder.org/user/jupyterlab-debugger-hwxovlw4/lab/tree/examples/index.ipynb
Xeus-python:第一个支持 Jupyter Debug 的内核
Xeus 是 Jupyter kernel protocol 的 C++实现,它本身并不是一个内核,而是能帮助构建内核的库。当开发者希望构建 Python、Lua 等拥有 C、C++ API 的语言内核时,它非常有用。
目前已经有一些内核使用 xeus 进行开发,Xeus-python 内核是我们做 Python 开发时可选的一个内核,它去年就已经有发布。Xeus-python 之所以被 Jupyter 团队选为第一个实现 Debug 的内核,主要是它有以下两大优势:
  • Xeus-python 具有可插拔的并发模型,它允许在不同的线程中运行 Control channel 的处理过程;
  • Xeus-python 有非常轻量级的代码库,因此迭代与更新都非常方便。
短期内,xeus-python 还会有进一步提升的计划,例如添加 Ipython 魔术方法,优化 xeus-python 的 PyPI 等。
深入至 debugger 的前端架构
JupyterLab 的 debugger 扩展针对用户对 IDE 的使用习惯提供了通常性功能:
  • 带有资源管理器的侧边栏,无序列表,源预览以及允许导航至调用堆栈。
  • 可直接在代码旁(即在代码单元以及代码控制台中)设置断点的功能。
  • 可视化的标记,指示当前执行停止的位置。
当使用 Jupyter 笔记本时,执行的状态保存在内核中。但是如果我们执行了一个 cell,然后又把整个 cell 删了,那么用户在 Dubug 的时候希望运行到那些代码又怎么办?
如下动图所示,该插件支持特定用例,并能在只读模式下查看以前执行过的 cell。
进入已删除的单元格
在 JupterLab 中调试代码控制台
在 JupyterLab 中调试文件
可以在 notebook 级别上启用调试,用户可以在调试 notebook 的同时在另一个 notebook 上工作。
同时调试多个笔记本
可以使用树状查看器和表状查看器检查变量:
变量浏览器
JupyterLab 的 debugger 插件目标是与任何支持调试内核一并使用。通过 Debug Adapter Protocol,debugger 插件可以抽象出针对于特定语言的功能,并为用户提供匹配的调试界面。
并且团队计划在 2020 年对 debugger 的体验进行重大改进,例如在变量浏览器中支持丰富的渲染,在 UI 中支持条件断点。
VS Code 可视化 Debug 工具
Debug 是条漫漫长路,不久前我们也介绍过一款 VS Code 实时可视化 debug 工具,在此也可以作为参考。以一种更优雅、更简洁的 debug 方式帮用户找到代码问题所在是未来优化的方向之一,而之前所介绍这款可视化 debug 能够快速展示数据结构。
从效果层面上看此款工具更加惊艳,而且跟以往传统 debug 方式的展示形式完全不同,比如将断点设置为第 32 行定义双向链表,随后一行行运行代码就会在右图展现出对应的数据结构图。
同时也会根据数据结构以不同的方式展现,例如树形、表格、曲线和图等。
同时还内置了其他可自定义的可视化调节器,可以根据面对不同的处理对象,可选择更易于理解的可视化方式。比如图表可视化,Plotly 可视化,Tree 可视化,网格可视化,文本可视化等等。
Plotly 可视化
AST 可视化
不过这款 VS Code 的 debug 工具开发者正在探讨其对 Python 的支持,而对于 Python 的完美支持会使得该项目更加便捷且适用。
而对于 debug 来说,不管最终是采用的是 print()大法,或是善用 assert 语句,亦或是以直接设置断点,包括各种新推出的 debug 工具。单从辅助工具角度层面看,只要它能够提高工作效率,不管是哪款 debug 工具,找到适合你的那便是值得一试。

参考链接:

https://blog.jupyter.org/a-visual-debugger-for-jupyter-914e61716559

https://www.reddit.com/r/MachineLearning/comments/foum00/n_jupyter_visual_debugger/

编辑:王菁
校对:林亦霖
(0)

相关推荐

  • 学Python你一定要会用jupyter

    学Python你一定要会用jupyter

  • Bug与Debug的随笔

    bug的本意是指昆虫.小虫.损坏.缺陷等意思,在互联网时代还有一种引申意义,用来形容某人/物超乎想象的厉害,那简直就是开挂的人生,系统的bug! 一般地,在码农的世界了,bug是在电脑系统或程序代码中 ...

  • 如何修改Jupyter Notebook的默认路径

    本文基于Windows 10系统,其他版本及类型的操作系统未测试过,不过设置方法可能类似.安装Anaconda以及jupyterlab之后,jupyterlab默认的路径为当前用户的用户路径,一般在C ...

  • 构建属于你自己的Jetbot

    构建属于你自己的Jetbot

  • 我最期待的一款神器!终于能白嫖了

    每次汤汤发小说漫画类的神器,后台就有许多汤友留言求专门看期刊杂志的APP,这类APP就真的有这么香吗? 今天汤汤在找其他软件的时候,还真就遇到一款,真是"踏破铁鞋无觅处,得来全不费功夫&qu ...

  • 测试了一个月的神器,终于可以发出来让大家爽一把了

    Hello,大家好,我是小喵. 今天小喵给大家推荐一个可以下载全网小说.出版书籍的神器:小寻书. 下载小说的软件,小喵之前也推荐过不少了.但是之前推荐的软件,都是在软件里面缓冲下载.下载的格式还是TX ...

  • 英语音标的学习神器,终于被我找到了!

    学英语很难,但学习很快乐.     --- 学英语那点事 作者 | 学姐 © 原创文字作品 大家好,我是学姐. 市面上的双语词典.单词书,多数使用国际音标为单词注音. 比如上个月学姐力荐的陆谷孙先生主 ...

  • 无论是“养鱼”还是“摸鱼”都是神器,终于给大家找到了~

    靠靠靠,我从来没有这么激动!!! 之前一直想给大家分享一款PC控制手机,手机控制PC的软件:但奈何这种软件数量少不说,且质量还不高: 但是今天让我找到了:一款免费的安卓投屏电脑的神器~简直是学生党必备 ...

  • 这种神器,终于有了!

    电脑使用的时间长了,肯定安装过不少软件,软件会自动生成很多文件夹,除此之外我们自己有时候为了需要也会新建一些文件夹.但有时候因为卸载了软件或者删除了文件,会使我们的电脑中存在很多空白文件夹,虽然不怎么 ...

  • 罕见神器,终于现身!

    平时工作或者学习用到电脑的时候,经常有的小伙伴想一心两用,比如跟"事儿哥"一样,想一边打字写文章,一边观察粉丝群里的情况,但是把整个微信窗口置顶,又有点太大了:又或者想一边看网页视 ...

  • 新编辑神器,可以在终端运行 Jupyter Notebook 了!

    原创 东哥起飞 Python数据科学 3天前 大家好,我是东哥. 在我初学Python的时候,一直惯用着安装式的编辑器软件,比如PyCharm和Spyder.并且,一直以为编辑器都是这种形式的,有的区 ...

  • 终于等到新鲜的双端神器了!我就先爽了!

    待在家里放松的方式有很多,若是打游戏的话,还是有些费神的,不如追追剧.看看电影. 之前也安利过许许多多这样的软件,但随着使用的人数增多,也会出现许许多多的问题. 比如作者不再维护而关闭,比如服务器卡顿 ...

  • 新编辑神器,可以在命令行运行 Jupyter Notebook 了!

    作者:东哥 转自:Python数据科学 大家好,今天分享朋友东哥的一篇文章. 在我初学Python的时候,一直惯用着安装式的编辑器软件,比如PyCharm和Spyder.并且,一直以为编辑器都是这种形 ...