在偶然尝试了一次Jupyter Lab之后,我迅速认识到了其强大而独特的功能,如可以在浏览器中启动Terminal、Python Console等Notebook所不具备的功能,而它们对于在集中型服务器集群上的开发和调试都有着极大的帮助。于是我便做了一些调研,遂有本文。
注意事项
- Jupyter Lab 和 Jupyter Notebook 的关系:两者是相关联的,甚至服务器都是互通的。启动Jupyter Lab后,使用相同的网址和端口,后面打上
/tree/YOUR/FOLDER/POSITION
即可访问Notebook,而加上/lab?
则是访问Lab。但两者很多地方也并不相通,如插件系统是分别独立的,各种设置也是独立的。 - Lab的好处主要是它是一个集成的环境。你在一个页面中可以打开多个子Tab,这些tab不限于notebook,还可以是代码文件,Markdown文件,甚至是新的terminal等,这是很了不起的。如果你关闭了Lab的页面,重新访问Lab,甚至是从另一台设备访问Lab,你都可以得到一个完美复原的环境,包括你打开的页面,它们的位置,甚至运行情况都会得以保存。即相当于你有了一个即用即走的远程桌面。
- 有一点要格外留意,一定不要在多个浏览器tab中打开Lab,否则你在A Tab中做了修改,过了一会儿不慎在B Tab再次修改,那么就会造成一个严重的版本冲突。
- Jupyter Lab有两个大版本,版本1和版本2。我现在使用conda -c anaconda安装时只能安装到1,但pip和conda-forge可以安装到版本2。
插件
- 首先要有Debug插件,属于刚需,也是官方的插件。它可以让你打断点调试bug,也可以查看变量池:@jupyterlab/debugger
- 然后是Toc插件,这个同样是刚需。除了在Notebook中的各个Markdown标题间快速跳转,看Markdown时候也会用到,比较方便。同样是官方插件:@jupyterlab/toc
- 第三个官方插件是一个GitHub插件,它允许人们直接访问某个GitHub仓库并拉下来:@jupyterlab/github
- 上面的插件方便了浏览和使用其他GitHub仓库,而@jupyterlab/git则可以更加直观的观察本Repo内部的Git变更。
好用功能
- 右键中
Show Contextual Help
选项。会显示一个新的窗口,你可以将其拖到窗口右侧,当你点击或光标移动到任何位置时,这个窗口中都会事实地显示该函数的帮助文档,非常方便。但注意,它会拉低流畅度。
开机自启动
习惯了Jupyter Lab的方便功能后,其实小型Linux服务器(并不是常开,在家里随用随开)开机只要自动打开Lab服务就足够了,一切常用功能都可以满足,而且一个chrome tab即可。
使用以下命令新建一个服务:
sudo vim /lib/systemd/system/jupyterlab.service
服务的内容为:
[Unit]
Description=Jupyter Lab Demon
[Service]
ExecStart=/home/miracle/anaconda3/bin/jupyter-lab
RestartSec=10s
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=jupyterlablog
User=miracle
[Install]
WantedBy=multi-user.target
然后重启服务,添加服务,运行服务:
sudo systemctl daemon-reload
sudo systemctl enable notebook
sudo systemctl start notebook
注意事项: 尽管jupyter-lab
和jupyer lab
都可以启动,但这里只能使用前者,因为后者有一个空格。jupyter-notebook
同理。