全文共1670字,预计学习时长7分钟
图源:datacamp
Notebooks一直是增进软件创意开发的工具。数据科学家用Jupyter记录他们的工作、探索和实验新算法,快速实践新方法并实时观察结果。当时机成熟时,软件开发人员就会用经典的IDE(集成开发环境),如VisualStudio Code和Pycharm,来将创意实现为库和框架。
那么,有没有一种方法可以将Jupyter转化成一个成熟的IDE,将最初概念变成功能强大且可重用的模块呢?
为了解决这个问题,包括QuantStack、Two Sigma、Bloomberg和fast.ai在内的几家机构开发了两个新工具:在Jupyter中添加了nbdev和可视化调试器。
文学编程与nbdev
1983年,Donald Knuth提出了一种新的编程范型,称为“文学编程”。
他说文学编程是“一种将编程语言与文档语言相结合的方法,从而使编写的程序比只用高级语言编写的程序更强大、更便捷、更易维护,而且可以说更有趣。主要思想是把程序当作文学作品,用人的语言而不是计算机的”。
图源:unsplash
Jeremy Howard和Sylvain Gugger对这个概念的设计非常着迷,去年年底他们推出了nbdev。该框架可以在熟悉的Jupyter Notebook环境中编写代码,探索和实验不同的方法,直到找到问题的有效解决方案。然后通过使用某些关键词,nbdev可以将实用功能提取到一个完整的python库中。
确切来说,nbdev通过添加以下支持来补充Jupyter:
· 根据最佳实践,从notebook中自动创建python模块
· 从代码中自动创建可搜索的超链接文档
· 将pip安装程序上传到PyPI
· 在标准IDE中编辑和导航代码
· 将所有更改同步回notebook
· 测试
· 连续集成
· 处理版本控制冲突
nbdev使软件开发员和数据科学家能够在Jupyter环境中,根据最佳实践,开发完整的python库。nbdev设置于PyPI上,要进行安装只需运行:
pip install nbdev
对于可编辑安装,请使用以下命令:
git clone https://github.com/fastai/nbdev pip install -e nbdev
查缺补漏
虽然nbdev涵盖了在Jupyter内部进行类似IDE开发所需的大部分工具,但仍然缺少一个部分:可视化调试器。
图源:unsplash
因此,由多家机构的开发人员组成的团队,近日首次公开发布了Jupyter可视化调试器。该调试器具有人们期望的IDE调试器的大部分功能:
· 变量探测器、断点窗口列表和源预览
· 显示当前执行已停止位置的标志
· 可以浏览调用堆栈(下一行、插入、跳出等)
· 可以在兴趣线旁边直接设置断点窗口
为了利用这个新工具,需要一个在后端实现Jupyter调试协议的内核。第一步是安装这样的内核。到目前为止唯一可以实现的是xeus-python。要进行安装,只需运行:
conda install xeus-python -c conda-forge
然后,运行Jupyter Lab,在侧边列上搜索“扩展管理器”并启用(如果已经启用可以跳过这一步)。
侧边列会出现一个新按钮。要安装调试器,只需转到新启用的“扩展管理器”按钮并搜索“调试器”扩展。
启用调试器
安装后,Jupyter Lab将要求执行构建,以包含最新的更改。点击接受,几秒钟后,就可以运行了。
为了测试调试器,我们创建了一个新的xpython notebook并编写了一个简单的函数。像往常一样运行函数并观察结果。若要启用调试器,请点击窗口右上方的关联按钮。
启用调试器
现在准备再次运行该函数。只是这一次,执行将在设置的断点窗口停止,这样就能够查看程序的状态。
调试代码
可以看到程序在断点窗口处停止。打开调试器面板,可以看到变量、断点窗口列表、调用堆栈导航和源代码。
Jupyter的新可视化调试器提供了期望的IDE调试器的所有功能。它仍在开发中,因此还有很多新功能可以期待。其开发者计划在2020年发布以下功能:
· 在变量探测器中可呈现丰富的mime类型
· 启用尽可能多的内核调试
· 用户界面中可支持条件断点窗口
· 从JupyterLab Voilà预览扩展中启用Voilà控制面板的调试
Jupyter Notebook一直是探索和实验代码的好方法。然而,软件开发人员通常会使用一个成熟的IDE,记录工作,以创建可用于生产的库。这不仅低效,而且会造成Jupyter价值的损失。
图源:unsplash
nbdev和可视化调试器是两个旨在缩小notebook和IDE之间差距的项目。此外,notebook可实现更好的文档,包括图表、图像和视频,有时还提供了更好的工具,如自动补全功能。
让编程就像写小说,这样的Jupyter你值得拥有!
留言 点赞 关注
我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”
(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~