开发工具 | 你真的会用jupyter吗?
点击蓝字关注我
提到jupyter notebook,应该很多接触过Python的同学都有所耳闻,对于这款工具更多人表达的是一种赞誉,都认为它是一款非常优秀的开发工具,但是具体哪里优秀?很少有人详细介绍。本文就来详细的介绍一下jupyter notebook的插件管理、主题修改、服务搭建、多语言支持等功能,让你了解一下jupyter notebook更为强大的一面。
—▼—
前言
提起jupyter notebook,应该很多学习过Python的同学都不陌生。虽然用jupyter notebook的同学相对较少,但是提及这款开发工具,很多人都会赞不绝口,“jupyter很强大,交互式、富文本”,很多人都知道jupyter notebook的这几个优点,但是,试问一下,你真的会用jupyter吗?
以Python开发为例,我们只需要在windows命令行或者linux/Mac终端输入“jupyter notebook”或者“ipython notebook”即可使用默认浏览器打开一个在线IDE,
首先说一下交互式,
jupyter notebook中一个非常重要的概念就是cell,每个cell能够单独进行运算,这样适合于代码调试。我们开发一个完整的脚本时变量会随着代码执行的结束而从内存中释放,如果我们想看中间的变量或者结构,我们只能通过断点或者输出日志信息的方式进行调试,这样无疑是非常繁琐的,如果一个程序运行很多这种方式还可行,如果运行时间长达几个小时,这样我们调试一圈耗费的时间就太长了。
而在jupyter notebook中我们可以把代码分隔到不同的cell里逐个进行调试,这样它会持续化变量的值,我们可以交互式的在不同cell里获取到我们想要测试的变量值和类型。
然后说一下富文本,
开发代码不仅是给机器去“阅读”,也需要让其他的同事、同学能够很容易的阅读。因此,注释就在开发过程中变的非常重要,一个完善的注释能够让周围人更加容易理解,协作效率也更高,避免重复性劳动。在大多数IDE中都可以进行注释,但是几乎都是相同的,只支持一些简单的文本格式注释,这显然是不够的,jupyter notebook支持Markdown编辑,它的cell不仅可以用于编码,还可以用于书写文本,Markdown可以轻松完成标题、数学公式等格式的编辑,更加有助于解释代码,适用于教学等场景。
最后再说一下轻量、触手可及,
开发过程中我经常需要测试一个小的代码块或者函数,这时候有两个选择:在IDE中新建一个测试脚本;打开命令行下的Python。我觉得这两个都不是好的选择,如果在项目下新建一个脚本后续还需要记住把它清理掉,如果写一个完善的测试脚本用于Alpha、beta测试这显然是低效不现实的。而选择在命令行下,界面不友好,操作不灵活,体验更差。
这时候就显现出jupyter notebook的优势,只需要输入jupyter notebook就会在流量器中打开一个网页,能轻量、快捷的进行开发验证,效率很好。此外,我们还可以通过搭建jupyter notebook服务使得它一直在服务器下运行来避免每次需要时都要在命令行下重复打开,我们只需要在浏览器打开对应的网页即可,这一点下文会详细介绍。
其实,除了这些我们耳熟能详的优点之外,jupyter还有很多令人惊叹的亮点:
插件管理
主题修改
多语言支持
下面就针对这3点分别介绍一下,介绍下面3个功能的前提条件是已经通过下方命令成功安装jupyter notebook,
$ pip install jupyter notebook
插件管理
安装插件管理器
如果没有安装插件管理器,打开jupyter notebook后菜单栏只有如下3项,
Files
Running
Clusters
我们需要安装插件管理器来管理我们需要的插件,
第一步:用pip安装插件管理包,
$ pip install jupyter_contrib_nbextensions
$ pip install jupyter_nbextensions_configurator
第二步:安装一些插件并启用插件管理器,
$ jupyter nbextensions_configurator install --user
$ jupyter nbextensions_configurator enable --user
然后再次打开jupyter notebook会发现菜单栏多了一个选项Nbextensions,
记得勾选disable configuration for nbextensions without explicit compatibility (they may break your notebook environment, but can be useful to show for nbextension development),否则下方插件是不可选状态。
我们可以通过命令来管理开启或关闭某个插件,但是我觉得还是通过直接勾选我们需要的插件效率更高。
选择插件
我们从上面可以看出,jupyter notebook有很多插件,我们该用哪一个呢?我推荐5款个人认为不错的插件。
Table of Contents
Execute Time
Nofity
Codefolding
Hinterland
下面分别介绍一下它们的功能,
主题修改
很多同学使用jupyter notebook都会觉得,这款开发工具界面太单调了,只有纯白色的主题,其实并不是这样,jupyter notebook也支持主题修改,而且非常方便。
首先在命令行下输入下面命令安装主题,
$ pip install jupyterthemes
jupyter notebook的主题管理工具叫做jt,我们可以通过下面命令查看可用主题,
$ jt -l
Available Themes:
chesterish
grade3
gruvboxd
gruvboxl
monokai
oceans16
onedork
solarizedd
solarizedl
然后通过下面命令设置主题,
$ jt -t <theme_name>
其中theme_name为主题名称。
如果觉得不满意,想退回默认主题,可以通过下方命令实现,
$ jt -r
多语言支持
很多同学是因为Python而接触到jupyter notebook的,因此会认为这就是一款Python专属的开发工具,如果这样的话,那么也不足以我专门用一篇文章来介绍这款开发工具。
它更像是eclipse、IDEA、vscode,是一款综合的开发工具,它不仅支持Python,还支持C++、julia、R、ruby、Go、Scala、C#、Perl、PHP、Octave、Matlab、Lua、Tcl、等多种编程语言,功能十分强大,支持语言详情,请查看下方链接,
https://github.com/jupyter/jupyter/wiki/Jupyter-kernels
不同语言的配置方式各不相同,这里不再一一介绍,可以根据自己需要的语言自行在网上搜索相关配置资料进行配置。
如果非要找出使用jupyter notebook的缺点,我认为就是每次启动的时候相对繁琐,我们启动本地安装的IDE,一个命令或者点击一下图标即可,但是如果启动jupyter notebook就需要进入命令行或终端,输入“jupyter notebook”进行打开,如果使用的是虚拟环境,首先还要激活虚拟环境,这无疑是非常繁琐的,而且启动后它会占用一个终端或命令行窗口,如果意外关闭则会终止jupyter notebook服务。其实,这也是有解决方法的,我们搭建一个持续化的jupyter notebook服务,让它一直在服务器后台运行,这样既不占用窗口,也不需要繁琐的打开步骤,我们只需要把对应的URL收藏,每次需要时能够秒级速度打开,下面就来介绍一下jupyter notebook的搭建步骤。
第一步:获取sha1密码
在命令行下输入ipython,
In [1]: from IPython.lib import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:abc12d02mxe:lsjdjflsoiwl1190slka9k30ksks11laoqm'
$ jupyter notebook --generate-config
c.NotebookApp.ip = '*'
c.NotebookApp.password = u'sha1:xxx:xxx'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
c.NotebookApp.enable_mathjax = True
$ nohup jupyter notebook > /dev/null 2>&1 &
▲
END
长按扫码可关注