Author: haoransun
WeChat: SHR—97
1 JupyterLab入门
1.1 Jupyter Lab简介
Jupyter源于Ipython Notebook,是使用Python(也有R、Julia、Node等其他语言的内核)进行代码演示、数据分析、可视化、教学的很好的工具,对Python的愈加流行和在AI领域的领导地位有很大的推动作用。
Jupyter Lab是Jupyter的一个拓展,提供了更好的用户体验,例如可以同时在一个浏览器页面打开编辑多个Notebook,Ipython console和terminal终端,并且支持预览和编辑更多种类的文件,如代码文件,Markdown文档,json,yml,csv,各种格式的图片,vega文件(一种使用json定义图表的语言)和geojson(用json表示地理对象),还可以使用Jupyter Lab连接Google Drive等云存储服务,极大得提升了生产力。
JupyterLab 是广受欢迎的 Jupyter Notebook「新」界面。它是一个交互式的开发环境,可用于 notebook、代码或数据,因此它的扩展性非常强。用户可以使用它编写 notebook、操作终端、编辑 markdown 文本、打开交互模式、查看 csv 文件及图片等。除此以外,JupyterLab 还具有灵活而强大的用户界面。
1.2 安装Jupyter Lab
据官网介绍,Jupyter可以使用conda
,mamba
,pip
,pipenv
ordocker
进行安装。
1 | conda install -c conda-forge jupyterlab |
1 | pip install jupyterlab |
安装后,在命令行中输入
1 | jupyter lab |
即可在浏览器中自动打开。但是,请注意,这里打开的JupyterLab使用默认虚拟环境(base),并且使用系统根目录作为初始目录,且目录无法更改。
1.3 主界面介绍
JupyterLab
的界面中包含下列组件:
- 主工作区:包含各种文件的tab
- 左侧边栏:包含文件、kernel、终端、插件的管理器
- 菜单栏:包含文件、编辑、运行、视图等常用操作
1.3 如何让JupyterLab使用指定的虚拟环境?
即在JupyterLab中添加Kernel,见下面方法
1.4 常用快捷键
2 JupyterLab 添加kernel
以下是在Ubuntu中实现
新建属于自己的新虚拟环境,然后使用ipykernel包添加进去后,刷新即可。
1 | conda env list |
下载ipykernel模块包
1 | pip install ipykernel |
3 Jupyter上调试代码
JupyterLab比Jupyter notebook高级的一点是它支持代码调试了。
总共需要安装的东西有
- jupyterlab
- Nodejs
- ptvsd
- jupyterlab的debugger插件
- xeus-python
安装方法
适用于已经有了conda环境,且已经安装了部分环境的。
(1)进入conda虚拟环境
1 | conda activate env-name |
(2)安装环境
1 | pip install jupyterlab |
(3)安装JupyterLab 前端插件
1 | jupyter labextension install @jupyterlab/debugger |
(4)安装xeus-python作为后端kernel
1 | conda install xeus-python -c conda-forge |
常见Bug
(1)ValueError: Please install nodejs >=12.0.0 before continuing
(2)ValueError: Please install Node.js and npm before continuing installa
(3)界面没有debug图标
没有成功安装debugger插件。确认以上每一个步骤都成功执行
(1)打开jupyter lab
(2)调试
第一步,打开代码区域右上角的调试开关
第二步:设置断点
第三部:点击左上角的运行,就会跳到断点处,右上角显示变量区域,右下角执行操作
4 JupyterLab 拓展插件
方法1:
JupyterLab
有着丰富的官方和第三方插件,安装插件前需要安装Node.js
1 | conda install -c conda-forge nodejs |
启动插件管理器:
方法2:
在Lab中安装插件并不需要pip,直接在界面侧栏就可以搜索你需要的插件。
当然在此之前,你需要设置显示插件栏,因为默认插件栏不显示。
点击菜单栏Settings
下拉框中的Advanced Settings Editor
选项,会出现一个设置页面。
接着,点击Extension Manager
,并且在右边的空白框里填上{'enabled':true}
,并且按右上角的保存按钮。
最后,你会看到Lab右边会出现插件栏的按钮,你可以在搜索栏搜索想要的插件,并直接安装。
4.1 主题插件
JupyterLab
自带的主题只有Light和Dark两个,但是好在我们可以在插件管理器中下载第三方的主题,搜索关键词theme就可以找到很多。我现在用的是jupyter-calm-theme
。
4.2 TOC
常用Markdown记笔记的同学肯定很熟悉toc,就是目录的意思。安装后侧边栏中可以显示Notebook和Markdown中的目录,方便定位。目录可以滚动,并且能展示或隐藏子目录。
https://github.com/jupyterlab/j
4.3 Github
安装这个插件后,JupyterLab
左侧会出现一个Github
按钮,我们可以在里面搜索Github
项目,并且打开项目里面的文件。如果是notebook文件,还可以直接在本地环境中运行代码。
甚至可以在JupyterLab
里抽卡
这个插件非常适合在Lab上学习github项目,方便高效。
https://github.com/jupyterlab/j
4.4 Latex
支持在线编辑并预览LaTeX文档。
https://github.com/jupyterlab/j
4.5 HTML
该插件允许你在Jupyter Lab内部呈现HTML文件,这在打开例如d3可视化效果时非常有用。
https://github.com/mflevine/jup
4.6 plotly
该插件可以在Lab中展示plotly可视化效果。
https://github.com/jupyterlab/j
4.7 bokeh
该插件可以在Lab中展示bokeh可视化效果。
https://github.com/bokeh/jupyte
4.8 matplotlib
该插件可以在Lab中启用matplotlib可视化交互功能。
https://github.com/matplotlib/j
4.9 drawio
该插件可以在Lab中启用drawio绘图工具,drawio是一款非常棒的流程图工具。
https://github.com/QuantStack/j
4.10 sql
该插件可以在Lab中连接数据库,并进行sql查询和修改操作。
https://github.com/pbugnion/jup
4.11 variableinspector
该插件可以在Lab中展示代码中的变量及其属性,类似RStudio中的变量检查器。你可以一边撸代码,一边看有哪些变量。
https://github.com/lckr/jupyter
4.12 dash
该插件可以在Lab中展示plotly dash交互式面板。
https://awesomeopensource.com/p
4.13 gather
在Lab中清理代码,恢复丢失的代码以及比较代码版本的工具。
https://github.com/microsoft/ga
4.14 go to Definition
该插件用于在Lab笔记本和文件编辑器中跳转到变量或函数的定义。
https://github.com/krassowski/j
4.14 lsp
该插件用于自动补全、参数建议、函数文档查询、跳转定义等。
https://github.com/krassowski/j
4.15 spreadsheet
该插件用于在Lab上显示excel表格,只读模式。
https://github.com/quigleyj97/j
Jupyter Lab还有很多强大的拓展插件,这里也没办法一一列举。感兴趣的去github找找,提供一个项目供参考。
https://github.com/mauhai/aweso
4.16 支持多语言显示
1 | pip install jupyterlab-language-zh-CN #支持中文 |
4.17 代码自动补全
1 | pip uninstall jedi |
4.18 代码自动补全
jupyter lab 3.0之后不再需要nodejs,似乎我们可以不需要nodejs
,不通过jupyter labextension install
语句,仅仅依靠pip/conda/mamba
就可以安装拓展
作为jupyter lab
平台上非常实用的代码智能补全插件,按照官方Github仓库的说明,通过下面语句,即可成功安装😉
1 | pip install "jupyterlab-kite>=2.0.2" |
4.19 jupyter-matplotlib
作为jupyter lab
上开启交互式matplotlib
绘图所需的拓展,我们现在可以通过下面的语句直接进行安装,这样的好处显而易见——我们无需再build
了!
1 | pip install ipympl |
5 JupyterLab 使用小技巧
5.1 计算单元的运行时间
我们可以在一个jupyter notebook单元的开头使用%%time命令来计算执行该单元的时间。
5.2 进度条
可以使用python外部库创建进度条,它可以实时更新代码运行的进度。它让用户知道正在运行的代码脚本的状态。你可以在这里获得相关的库Github库。使用进度条设置,具体操作如下:
首先,安装tqdm库:
在cmd命令窗口输入pip3 install tqdm或者直接在jupyter notebook单元内输入!pip install tqdm。
然后,通过以下命令生成进度条:
5.3 代码风格自动补全
有时jupyter notebook单元格中的代码段格式不好,通过nb_black库,可以自动调整代码段的正确格式,让代码具有更好的可读性。
安装nb_black库:
pip3 install nb_black
在jupyter notebook 中使用:
%load_ext nb_black
5.4 下载并安装Python库
Jupyter notebook可以通过在单元格内输入!pip install ***代码,自动下载并安装指定的python库。
以pandas库为例,具体代码如下:
1 | !pip install pandas |
5.5 运行不同的编程语言
Jupyter notebook还可以用来编译和运行来自不同语言的代码。只需要在单元格开头处输入%%命令,就可以运行对应的语言代码:
- %%bash
- %%HTML
- %%python2
- %%python3
- %%ruby
- %%perl
6 Ubuntu18.04下Jupyterlab远程访问
6.1 安装及启动JupyterLab
- 使用 conda:
1 | conda install -c conda-forge jupyterlab |
- 使用 pip:
1 | pip install jupyterlab |
- 使用mamba
1 | mamba install -c conda-forge jupyterlab |
- 安装完成后,启动JupyterLab
1 | jupyter-lab |
6.2 生成JupyterLab的配置文件
- 生成配置文件,文件的路径默认为: ~/.jupyter/jupyter_lab_config.py
1 | jupyter-lab --generate-config |
6.3 修改配置文件
所有的配置都在 jupyter_lab_config.py 这个配置文件中。具体可以修改的地方可以查看官方文档:
https://jupyter-notebook.readthedocs.io/en/stable/config.html
例如修改文件保存位置,注意旧版本的配置文件中修改的是c.ServerApp.notebook_dir=’ ‘这一项,而目前最新的配置文件中修改方法如下:
1 | ## The directory to use for notebooks and kernels. |
6.4 配置远程连接
当你想远程访问jupyterlab的时候,首先需要配置一些参数
1 | c.ServerApp.allow_remote_access = True #允许远程访问 |
接着通过ssh远程连接到配置了JupyterLab的服务器或者计算机上,远程启动JupyterLab服务
1 | jupyter-lab 或者 jupyter lab |
然后打开浏览器,输入[ip:8888],这里的ip是远程服务器或计算机的ip地址,8888是默认的端口
- 利用token登录
第一次登录的时候,可能需要输入password或者token,目前由于没有设置password,可能需要输入token,获取token的命令如下,保证服务开启的时候,
1 | jupyter server list |
输出
1 | Currently running servers: |
其中http://[your_user_name]:8888/?token=[xxxxxxxxxxxxxxxxx]就是远程连接时的服务,把里面的token(是一串字母和数字)粘贴到需要输入token的位置即可。
- 利用password登录
首先设置密码,在终端输入
1 | jupyter-lab password |
按照指示输入期望的密码,提示生成一个新的文件jupyter_server_config.json。之后登录就需要输入密码了。
实际上,在JupyterLab的配置文件中,有一项是
1 | c.ServerApp.password = '' |
这里也可以设定密码,但是有可能会出现问题,在你设置了密码之后,登录JupyterLab时确无法正确的解析,弹出Invalid credentials错误。因此建议通过命令行生成密码。当然遇到这种情况仍然可以解决,解决方法如下
https://github.com/jupyter/docker-stacks/issues/1056
- ip设置为0.0.0.0,可以保证局域网内其他用户访问;
- 端口设置为9820,默认为8888,也可以为其他,但要保不发生端口占用;
- 工作目录自定义设置,含义为jupyter lab启动时的默认工作目录;
- 密码哈希值为设置登录密码时自动生成的。
6.5 项目启动
项目启动有两种方式:
- 直接启动
终端输入命令:
1 | jupyter-lab --allow-root |
该方式的好处是可以在终端实时查看jupyter界面操作,即实时打印的功能。缺点是终端退出,服务就终止了。
- 后台启动
终端输入命令:
1 | nohup jupyter-lab --allow-root > /jupyter/jupyter.log 2>&1 & |
解释:
nohup
表示no hang up,不挂起,命令执行后即使终端退出,服务也不会停止。- 并指定日志文件路径为
/jupyter/jupyter.log
。
两种方式任选其一,运行jupyter服务,然后在浏览器通过ip+port的形式访问jupyter notebook。输入设置的密码,登录即可。
6.6 添加conda环境
- 新建conda环境,例如新建一个python3.6的环境,命名为py36
1 | conda create -n py36 python=3.6 |
- 进入conda环境
1 | conda activate py36 |
- 首先安装 ipykernel
1 | conda install ipykernel |
- 查看JupyterLab中已有的环境
1 | jupyter kernelspec list |
- 删除环境
1 | jupyter kernelspec remove [env_name] |
- 安装已有conda环境到Jupyterlab中
1 | python -m ipykernel install --user --name=xxxxx --display-name "xxxxx" |
大坑,python内核版本不对,导致很多文件下不下来
通过以下命令找到jupyter内核所在位置
1 | jupyter kernelspec list |
上面是我自己的虚拟环境内核
下面是别人的虚拟环境内核
发现自己的内核版本指定的是系统自带的python(此处系统版本是3.9)。而别人指定的是自己虚拟环境中的python版本.
vim自己的文件更改内核版本即可。
1 | conda env list |
vim上述文件中的 argv第一个参数
如果出现No Kernel的情况,说明指定环境中没有安装 ipykernel
1 |
|
成功安装后,即可正常使用shr这个kernel