内容摘要:在前面讲Python的时候,我们谈到过Jupyter笔记本,为什么今天要再专门讨论一次呢?因为这个工具太重要了,除了是Python技术传播和应用的重要帮手,还可以为实现可重复科学研究提供技术保障。JupyterNB是开源阵营中的优秀代表,作为一款编辑器除了支持Python也可以支持R,现在已经成为专业工具包教学与科研中必不可少的工具。
1、Jupyter技术体系
Jupyter提供一套开源工具的生态系统来方便交互式计算和数据分析。在此分析中,让用户直接参与到计算过程(通过执行代码来理解一个问题,并迭代式地改进自己的方法)是Jupyter项目的初心。
最初的Jupyter是从IPython项目演变而来的,2001年这个作为Notebook的萌芽,期望通过交互式的Python和科学Python生态系统,让研究结果可以无障碍地被共享。对于用户可以专注于使用Python进行交互式计算来应对科学计算的需求和工作流程。
为了更好地不依赖于操作系统,不受平台限制,Jupyter NB基于Web环境构建,也就是你有浏览器就可以使用,无论本地还是远程。以Jupyter开头的工具也是越来越多(https://github.com/jupyter
),除了Jupyter Notebook,还有:
- Jupyter Lab:下一代的Notebook,提供一体化环境,有点IDE的感觉,包括:Notebook,Shell,Markdown编写等。
- Jupyter Hub:解决多用户使用和认证的问题,就是输入密码才能用。
- Jupyter Kernel Gateway:让你的nb代码秒变微服务接口的神器。
- Jupyter Enterprise Gateway :支持分布式计算和多服务调度的私有云解决方案。
- mybinder:提供一键式部署的GitHub存储库,用来存放自己的代码、数据和notebook文件。
- Binderhub:下一代的binder,与JupyterHub相配合,提供从容器在云端部署的解决方案。
2、有代码就出结果的即时体验
Jupyter NB的定位与Spyder和PyCharm这类的IDE不同,它主要是给用户提供一个工作环境,更聚焦与解决问题。而不是开发类库,搭建架构。如果你是一个用户,而不是开发者,哪直接选择nb吧!NB犹如一个word文档,在里面你只要输入计算公式,马上就可以给出显示结果。同时,你还可以在上面加入任何标注和解释。
其特有的ipynb文件,可以保存成pdf,html甚至还原为py代码。下图是我的一个笔记本打开效果(图1)。你之前运行得到的结果都在上面,这对于科学研究用户非常重要,因为直接读论文,无法知道每一步细节,但是看NB就能看到每一个参数是怎么设置的,这对于可重复的科学研究至关重要!
图1 有代码就有结果的即时体验可能有些小盆友注意到,我的界面不太一样,左上角工具栏的图标怎么没见过(这是一个叫Zenmode的沉浸式编程模式)?感兴趣的往下看...
3、必会的NB应用技巧
Jupyter NB功能虽好,但是比如内存变量查看,代码格式化等还是与在IDE中的体验差了点。这时候你要知道NB的扩展功能,即nbextension。首先我们看怎么安装,同样打开一个python的虚拟环境,命令行模式下。
安装命令
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
#启用 nbextensions
jupyter nbextension enable codefolding/main
安装后,应该看到如下图2所示的效果,里面提供了上百种小扩展。根据你的需要安装扩展(因为Jupyter是基于web的,所以很多Javascript的技术都能应用,可扩展的空间非常大)。
图2 Jupyter NB扩展插件安装完插件后,再打开一个ipynb文件后,你会发现编辑器不一样啦,比如我日常用的记事本效果是这样地(图3)。变量编辑(1),代码长短位置提示(2)、大纲视图(3)都有。
图3 扩展插件使用效果一句话总结:Jupyter notebook和Lab都是非常活跃的开源项目,集中了很多先进的web技术,比如ArcGIS这类的平台都推出了基于它的NB套件。如果你还不会,我想Jupyter值得你花一些时间去学习!
网友评论