JupyterLab使用教程:程序员的笔记本神器v2.0

之前写过一份JupyterLab的使用教程,但是随着个人使用时间的增加和更多优秀插件的出现,断断续续我基于JupyterLab:v3.0+衍生出了自己的最佳实践,本篇文章将从以下方面更加全面地介绍JupyterLab

  • 搭建安装
  • 基本功能
  • 插件推荐
  • 容器化最佳实践

最终成品如下图所示,有兴趣的话一起来使用看看吧✨


JupyterLab-demo

介绍

了解JupyterLab之前先说下什么是Jupyter Notebook,简单来说它是一个交互式的开发环境,其提供了在Web上编写运行代码的能力,还可以同时使用md语法编写文档。

JupyterLabJupyter Notebook的下一代产品,如今已经发展到第三个大版本了,其主要优势有:

  • 更现代化的界面设计和更灵活的架构
  • 提供终端交互和文件浏览器
  • 结合插件可以快速打造成Web上的IDE笔记本

通过使用JupyterLab,我们能够以灵活,集成和可扩展的方式处理代码与文档,对于以下人群非常有帮助:

  • 随时随地希望试验一些代码片段,如Python、Julia、R、Go、Scala等
  • 大数据开发&机器学习进行数据分析、处理、建模等
  • 作为笔记本,可以将代码的输入输出解释直接导出成笔记文档,结合插件还可以绘制流程图等

安装

接下来,我将以Python为默认语言来搭建JupyterLab,这里我为了获取一个干净的环境直接使用Docker进行构建:

docker run -it --name jupyter_test -p 8888:8888 python:3.7-slim /bin/bash

Docker目的是方便出错后删除重来,这里仅做演示,大家直接在本机操作即可,只需要确认你安装好了Python基本环境就行:

# Input
python

# Output
Python 3.6.15 (default, Oct 13 2021, 09:43:57)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.

有了Python环境就可以直接安装JupyterLab

# 先换源
pip config set global.index-url https://pypi.douban.com/simple/
# 一行命令搞定
pip install jupyterlab

这一行命令我们就已经安装好了JupyterLab,启动起来试试看吧:

jupyter lab --allow-root --no-browser

直接访问:http://127.0.0.1:8888/lab?token={TOKEN}就能看到界面了!怎么样,方便吧。但是要想更加优雅地使用JupyterLab,还是得进行一些配置,让我们继续吧。

基本功能

设置密码

每次启动JupyterLab默认是通过Token的形式进行访问的,但是Token每次都不一样,而且还会过期,所以我们还是设置成密码的形式进行访问吧:

# 进入python交互环境
python

生成密码:

from notebook.auth import passwd
passwd()
# 输入你自己设置登录JupyterLab界面的密码 然后会有一串输出,记得复制下来,等会配置需要使用

修改JupyterLab 配置文件:

# Input
jupyter lab --generate-config

# Output
Writing default config to: /root/.jupyter/jupyter_lab_config.py

编辑这个文件vim /root/.jupyter/jupyter_lab_config.py,设置以下参数:

c.ServerApp.allow_root = True
c.ExtensionApp.open_browser = False
c.ServerApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$C2MHPsnHYOGQBXF30d7eag$bdeIwZFwzt7HOYkTECRPVA'
jupyter lab

此时再次进入http://127.0.0.1:8888/就需要输入密码了,为了方便后续一些功能的演示,我们顺便建立一个交互式脚本吧,操作流程如下图:

image

代码交互

代码提示

进入文件后,我们先使用!pip install numpy安装一个第三方库用于测试。在代码关键字后按Tab即可看到代码提示:

image

文档注释&查看

Shift + Tab即可看到文档注释提示:

image

注:如果代码提示功能有问题,设置下jedi版本,pip install jedi==0.17.2

对于数据科学方向的程序员来说,一些常用库的文档查看特别方便,Jupyterlab已经将常用文档内置,还提供了关键函数搜索功能,再也不用打开官方文档查找了:

image

代码调试

JupyterLab默认支持代码调试,使用也很简单,点击右上角的Bug图标开启即可:

image

文档多窗口

一般开发者的屏幕都是比较大的,这个功能特别适合左边窗口实验代码,右边看教程文档的情景:

image

cell可以拖拽且输出可以新窗口显示

image

随时启动新的终端交互

image

TOC目录

JupyterLab脚本是可以编写MD文本的,为了方便代码的可读性,侧边栏提供了目录展示功能,程序员可以更加方便地对自己代码进行管理:

image

风格设置

按键风格

支持vim emacs等按键风格:

image

界面&代码主题

JupyterLab默认提供了黑暗&明亮两种主题,开发者可以自由使用,如果对于主题有更多要求,接下来在插件部分我会介绍我使用的插件主题:

image

编辑器界面主题设置:

image

插件

JupyterLab本身的功能了解上面那么多就已经够日常基本使用了,但是社区的开发者还是贡献了很多有意思的插件。接下来我会介绍一些比较基础但又很实用的插件,让大家的效率进一步提升。

jupyterlab_code_formatter

代码格式写插件,我使用的是Python,用这个插件可以设置保存的时候自动用black和isort进行代码格式化,安装:

# 安装插件
pip install jupyterlab_code_formatter
# 安装格式化工具
pip install black isort

安装完成后,脚本界面右上角就会有一个格式化按钮,开发者也可以设置保存就触发格式化:

image

ipydrawio

开发者除了日常开发,还有文档编写工作,涉及到文档编写,基本上都会涉及到流程图绘制需求,ipydrawio则可以让你方便地在JupyterLab绘制流程图,安装:

pip install ipydrawio[all]

使用起来也非常方便,还可以分享出去,支持绘制的类型如下:

image

安装成功后和之前新建脚本的方式一样绘制流程图:

image

jupyterlab-unfold

这个插件让JupyterLab的文件浏览具有了和IDE一样的功能,原本JupyterLab在目录间跳转是一级一级进出,有了这个插件可以按照目录树的形式进行操作,极大地提升了打开不同目录下脚本的效率。

pip install jupyterlab-unfold

使用效果截图:

image

Theme

JupyterLab本身仅提供了简单的黑白两套主题,但是我对代码主题还是挺有追求的,所以也在社区找了下看是否有比较好的主题实现,万幸我个人常用的主题都有其他人开源了出来,大家有兴趣了可以试试:

安装:

pip install theme-darcula
pip install jupyterlab-theme-solarized-dark

Darcula主题效果图如下:

image

汉化

官方针对中文用户提供了汉化包,还是挺良心的:

pip install jupyterlab-language-pack-zh-CN

效果如下:

image

容器化最佳实践

为了方便在不同系统环境下能够快速使用JupyterLab,于是我选用Docker构建镜像,具体配置见pylab-jupyterlab-docker这样可以直接将配置和插件全部统一为镜像,这样有以下好处:

  • 跨平台,其他平台只要安装Docker就可以一键使用JupyterLab
  • 插件配置:
    • 保存则自动代码格式化
    • 主题支持:SolarizedDarcula
    • 中文汉化支持,默认还是英文
    • 代码变量跳转支持
    • 流程图、目录树等
  • 终端支持oh my zsh

所以上面介绍了这么多,你只需要看一遍下来熟悉下相关概念即可,倒是不用从头都搭一遍,如果你要使用,运行下面这行命令即可:

docker run --name jupyter_pylab -it -d --restart=always -p 0.0.0.0:8765:8888 -e SHELL="/bin/zsh" -v "`pwd`:/project-dir" howie6879/jupyter-lab-for-python37:v3.1.4 --allow-root --no-browser --port=8888

享受JupyterLab吧,如有错漏,请留言交流,谢谢。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容