预计所需阅读时间:4分钟

JupyterLab和JupyterNotebook都是一款交互式编辑器,很多人在用notebook做数据分析。而我初步学习数据分析时,看到notebook的界面感觉有点乱,在安装了插件之后,界面更是烦杂。当然网上配置notebook的文章比lab的要多很多,毕竟lab是新产品,知道和使用的人数会少一些。

接下来,我做数据分析的一段时间都是用着Pycharm,虽然它是左右分开的界面,有时不便,而且右边的黑字完全与黑色的背景混在一起,但Pycharm是很成熟的Python程序IDE,能处理大量相关任务,不用在不同程序间切换,很多插件也很实用,尤其是Kite这个语法提示和自动补全的插件,越用越顺手。

后来数据分析方面的任务多了很多,听说有下一代的JupyterLab也不错,便以尝试的心态来使用。没几次就觉得很舒服。它比JupyterNotebook更优的特点是界面更简洁,更模块化,更易于理解。这张图一看JupyterLab就更像一个IDE。

Lab和Notebook都可以安装插件,后者只需要在运行环境中用pip、conda安装插件的包就可以了,前者要在lab网页界面安装插件,有些插件,也要在运行环境安装对应的插件包,而且版本要对应,这点非常重要,在我之前的《Python包的兼容性问题的处理办法——基于conda的环境管理》文章里也提到一些例子。然后JupyterLab就将这个插件构建,让它可以像模块一样融入Lab的界面,如果安装插件过程自己没点到build,可以输入jupyter lab build命令来完成。

Lab有些插件要用nodejs包的支持,例如语法格式化插件jupyterlab_code_formatter和,通过conda install nodejs安装即可,注意在环境安装包的版本要与Lab安装版本对应,可以通过jupyter labextension list查看。

以上安装的插件是互相兼容的,也是我主要运行JupyterLab环境的插件。如果有不兼容的插件,它可能不完成build的过程,即使完成能看到插件的图标,但也不起作用。这里可以打开浏览器的开发人员工具,找Console选项卡,查看它的错误提示,找出是哪个插件的问题。

于是用JupyterLab与Pycharm的主要缺失就是没有kite的插件。没多久更新Kite之后,发现已经推出这个插件了,Github项目地址在,这里。安装方法很简单,在运行Python环境输入以下代码:

pip install jupyter-kite

jupyter labextension install "@kiteco/jupyterlab-kite"

最大的问题在于,它要求jupyterlab 2.20以上版本,可以通过conda install jupyterlab=2.2.5 -c conda-forge安装。在Anaconda的Base环境下,自带是版本1.2的jupyterlab,通过conda升级,它会检查环境内所有包的兼容性,最后发现有冲突装不了,也可以通过pip来装上去不检查兼容性。但事后证明jupyterlab很容易核心kernel崩溃,核心重启后jupyterlab-kite就不起作用了。

所以,我新建一个Python环境用来运行有kite插件的jupyterlab。装了jupyterlab-kite插件之后,它就能像在Pycharm等本地软件IDE那样可以自动提示并智能补全,而不只是通过Tab来补全。

本来想配置一个有所有插件的环境,可以像Pycharm一样方便的Lab数据分析环境,但发现再将jupyterlab_code_formatter之后就无法完成构建,只好作罢。只好在Base环境装格式化和绘图的插件。

于是两个环境有不同的分工,从而也达到兼容的jupyterlab-kite与其它插件的兼容问题。在new_env环境通过kite插件帮助下,快速完成成前期分析和预处理的代码后,在Base环境完成绘图呈现和格式化的任务,分开来处理。