JupyterLab使用教程
- 一、Jupyter简介
- 1. 用户接口
- 2. 架构原理
- 1)IPython Kernel
- 2)Jupyter Notebook接口
- 3)Notebook导出为其它格式
- 4)Projects overview
- 二、JupyterLab安装和基本使用
- 1. 安装
- 2. 界面初识
- cell的三种类型
- notebook支持两种模式
- 菜单
- 3. 工作目录、Notebook文件
-
- 4. 在jupyter中使用shell命令
- 三、快捷键
- 1. 通用快捷键(两种模式通用)
- 2. 命令行模式(按 Esc 生效)快捷键
- 3. 编辑模式(按 Enter 生效)快捷键
- 4. 自己动手设置快捷键
- 四、魔法命令
- 1. 查看魔法命令
- 2. 行魔法命令
- 3. 单元魔法命令
- 五、扩展组件
-
- 六、远程访问
- 1. 生成配置文件
- 2. 生成访问密码
- 3. 修改配置文件
- 4. 启动JupyterLab服务为后台进程
一、Jupyter简介
![Jupyter](https://img-blog.csdnimg.cn/8e63df0bc20a43ffa82429702018aa05.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGFuZ3lpMjAwOA==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
Jupyter源于Ipython Notebook项目,是使用Python(也有R、Julia、Node等其他语言的内核)进行代码演示、数据分析、机器学习、可视化、教学的非常好的工具,对Python的愈加流行和在AI领域的领导地位有很大的推动作用。
Jupyter目前支持超过40种编程语言,包括 Python, R, Julia, and Scala等。
1. 用户接口
-
JupyterLab
最新的基于web的交互式开发环境,适用于notebook、code和data。其灵活的界面允许用户配置和设计数据科学、科学计算、计算新闻和机器学习领域的工作流。模块化设计可以轻松的实现更多扩展功能。
本文主要讲解Jupyterlab的基本使用。
- 安装:
pip install jupyterlab
- 启用:
jupyter lab
-
Jupyter Notebook
上一代的基于 Web 的交互式开发环境,其功能在JupyterLab中已经包含,建议使用JupyterLab。
- 安装:
pip install jupyter
- 启用:
jupyter notebook
-
nbclassic
NBClassic 将基于 Jupyter Server运行Jupyter Notebook。
这个项目为JupyterLab和其他前端切换到Jupyter服务器作为Python Web应用程序后端做准备。使用这个包,用户可以在新的Python服务器后端上并排启动Jupyter Notebook、JupyterLab和其他前端。
- 安装:
pip install nbclassic
- 启用:
jupyter nbclassic
-
Jupyter Console
控制台前端
- 安装 :
pip install jupyter-console
- 启用:
jupyter console
-
Qt console
Qt控制台是一个非常轻量级的应用程序,在很大程度上感觉像一个终端,但它提供了一些只有在GUI中才可能实现的增强功能,例如内联图形、带有语法高亮显示的多行编辑、图形化调用提示等等。Qt控制台可以使用任何Jupyter内核。
- 安装:
pip install qtconsole
- 启用:
jupyter qtconsole
-
Voilà
Voilá允许你将Jupyter笔记本转换成一个交互式仪表板,让你可以与他人分享你的工作。
- 安装:
pip install voila
- 启用:
voila <path-to-notebook> <options>
2. 架构原理
1)IPython Kernel
所有其他接口(包括Notebook、Qt控制台、ipython控制台和第三方接口)都使用IPython Kernel。IPython Kernel是一个独立的进程,负责运行用户代码,以及计算可能的完成情况。前端(如Notebook或Qt控制台)通过使用ZeroMQ套接字发送的JSON消息与IPython内核进行通信;前端和IPython内核之间使用的协议在Jupyter中的消息传递中进行了描述。
![ipy_kernel_and_terminal](https://img-blog.csdnimg.cn/446762aa6fc846d69b0100cf75405858.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGFuZ3lpMjAwOA==,size_11,color_FFFFFF,t_70,g_se,x_16#pic_center)
这种设计的目的是允许基于同一内核轻松开发不同的前端,同时,也可以通过开发新的内核来支持新的编程语言。目前有两种方法可以为另一种语言开发内核:
- Wrapper Kernel,重用IPython的通信机制,只实现核心执行部分
- Native Kernel,采用目标语言实现执行和通信
![other_kernels](https://img-blog.csdnimg.cn/4fb414564a61489c9352d242b8cd5e6e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGFuZ3lpMjAwOA==,size_11,color_FFFFFF,t_70,g_se,x_16#pic_center)
2)Jupyter Notebook接口
Jupyter Notebooks是包含了代码、元数据、内容和输出的结构化数据。当保存到磁盘时,文件扩展名为.ipynb
,并使用JSON结构。有关notebook格式结构和规范的更多信息,请参阅nbformat文档。
![notebook_components](https://img-blog.csdnimg.cn/5e2cd8f90ab9419e8e57e3ace62c88af.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGFuZ3lpMjAwOA==,size_19,color_FFFFFF,t_70,g_se,x_16#pic_center)
3)Notebook导出为其它格式
使用工具 Nbconvert 将notebook文件导出为其他格式,比如HTML, LaTeX, 或者reStructuredText等。转换过程如下:
![nbconvert](https://img-blog.csdnimg.cn/dd05b96b31de4a729437d1b291de7fdb.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGFuZ3lpMjAwOA==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
4)Projects overview
下面是截至2017年的项目关系的图:
![repos_map](https://img-blog.csdnimg.cn/47c99e5ba6314b9ab846990d6dd47e12.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGFuZ3lpMjAwOA==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
二、JupyterLab安装和基本使用
Jupyter lab是Jupyter的下一代基于Web的交互式开发环境,是 Jupyter Notebook的升级版。
1. 安装
在安装JupyterLab之前,需要安装Python环境:
- 第一种选择,安装Python官方的发行版
- 第二种选择,安装Anaconda发行版本,建议在安装Python环境时首选Anaconda。
如果安装的Anaconda发行版,该版本已经包含了JupyterLab,所以不需要再另外安装,否则按如下命令进行安装。
python -m pip install --upgrade pip
pip install jupyterlab
pip install --upgrade jupyterlab
安装好后,启动JupyterLab
jupyter lab
默认情况下,启动成功后,会自动打开浏览器进入JupyterWeb界面(建议将Chrome、Edge或者firefox浏览器设为默认浏览器,不要使用IE浏览器),如果看到2中的界面,表示成功了。
2. 界面初识
![JupyterLab界面](https://img-blog.csdnimg.cn/1619ecc35421414db8a2b5c41042db2e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGFuZ3lpMjAwOA==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
当点击左边栏的文件浏览(File Browser)按钮,可以查看到notebook的root目录下的文件,上面有添加文件和文件夹、上传文件、刷新文件列表等按钮。
右边是notebook的工作区域, 整个notebook由单元格(cell)组成,以工作区域的上面有notebook的保存、单元的添加、删除、运行、单元类型切换等按钮。
cell的三种类型
- Code:编辑代码,运行后显示代码运行结果
- Markdown:编写Markdown文档,运行后输出Markdown格式的文档)
- Raw:普通文本,运行不会输出结果
notebook支持两种模式
该方式起源于vim编辑器。
- 编辑模式:
- 进入方式:命令模式下按Enter键或者鼠标点击Cell的编辑框进入编辑状态
- 主要操作:可以操作代码或文本的编辑、剪切、复制 、粘贴等操作
- 命令模式
- 进入方式:Esc键或者鼠标点击Cell编辑框前方的空白区域进入命令模式。
- 主要操作:可以操作cell单元本身,比如进入单元的删除、添加、剪切、复制 、粘贴、移动等操作
菜单
- 文件(File):与文件和目录有关的操作
- 编辑(Edit):与编辑文档和其他活动有关的动作
- 视图(View):视图相关操作
- 运行(Run):用于在不同活动(例如笔记本和代码控制台)中运行代码的动作,可运行选中单元,也可以运行所有单元
- 内核(Kenel):内核的起、停、切换等相关操作
- 标签(Tabs):停靠面板中打开的文档和活动的列表
- 设置(Settings):常用设置和高级设置编辑器
- 帮助(Help):JupyterLab和内核帮助链接的列表。
3. 工作目录、Notebook文件
工作目录
-
由启动jupyterLab的启动参数--notebook-dir
指定
jupyter lab --notebook-dir="E:/Projects"
-
如果没有指定参数--notebook-dir
,则由配置文件中的参数c.ServerApp.root_dir
指定
配置文件可以通过下面命令生成(可参考第五部分内容进行设置):
jupyter lab --generate-config
-
如果配置文件中也没有指定,工作目录由启动JupyterLab时的当前路径决定。
Notebook文件
Notebooks是包含了代码、元数据、内容和输出的结构化数据。当保存到磁盘时,文件扩展名为.ipynb
(存储在工作目录下的某个子目录中),并使用JSON结构。
![在这里插入图片描述](https://img-blog.csdnimg.cn/8b8788a4d37d4051b3085e21640763c0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGFuZ3lpMjAwOA==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
文件名的修改可以在文件系统中修改,也可以在Web界面右键进行修改
4. 在jupyter中使用shell命令
当你正在使用Python编译器,需要用到命令行工具的时候,麻烦的事情就出现了:要在shell和IDLE之间进行切换。
但是,如果你用的是Jupyter,就完全不用这么麻烦,你可以直接在命令之前加一个!
,就能执行shell命令,完全不用来回切换,就能在Jupyter中执行任何命令。
下面是在windows系统中,使用命令dir
查看当前目前的文件内容
![在这里插入图片描述](https://img-blog.csdnimg.cn/8f2bbbd9669d47698b71a464e9a71d5c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGFuZ3lpMjAwOA==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
比如我们需要使用pip安装包的时候,便可以直接在JupyterLab的某个文档的单元中运行!pip install xxxx
即可。
三、快捷键
快捷键可以干嘛,它不仅可以大大提高开发效率,还可以用来装X,正所谓一顿操作猛如虎。
不管你是奔着什么目的,都有必要掌握常用的快捷方式,下面按不同的模式列出了基本的快捷方式,并在自己经常使用的快捷方式前加*
注明。
1. 通用快捷键(两种模式通用)
*Shift-Enter : 运行本单元,选中下个单元
*Ctrl-Enter : 运行本单元
*Alt-Enter : 运行本单元,在其下插入新单元
*Ctrl-S: 保存并检查
2. 命令行模式(按 Esc 生效)快捷键
*Enter: 进入编辑模式
*Y : 单元格转入代码状态
*M : 单元格转入markdown状态
R : 单元格转入raw状态
1 : 设定 1 级标题
2 : 设定 2 级标题
3 : 设定 3 级标题
4 : 设定 4 级标题
5 : 设定 5 级标题
6 : 设定 6 级标题
*A: 在上面插入单元格
*B: 在下面插入单元格
*X: 剪切选择的单元格
*C: 复制选择的单元格
*V: 粘贴到下面
*Z: 撤销单元格操作
*D,D: 删除选中单元格
K: 选择上面的单元格
↑: 选择上面的单元格
↓: 选择下面的单元格
J: 选择下面的单元格
Shift-K: 扩展上面选择的单元格
Shift-↑: 扩展上面选择的单元格
Shift-↓: 扩展下面选择的单元格
Shift-J: 扩展下面选择的单元格
Ctrl-A: 选择所有的单元格
*Shift-M: 合并选中单元格, 如果只有一个单元格被选中,合并下方的单元格
S: 保存并检查
I,I: 中断服务
0,0: 重启服务(带窗口)
Shift-L: 在所有单元格中切换行号,并保持设置
*Shift-空格: 向上滚动
*空格: 向下滚动
Ctrl+Shift+[: 向左切换文档
Ctrl+Shift+]:向右切换文档
3. 编辑模式(按 Enter 生效)快捷键
Ctrl-M: 进入命令行模式
*Esc: 进入命令行模式
*Tab : 代码补全或缩进
*Shift-Tab : 提示或解除缩进
Ctrl-] : 缩进
Ctrl-[ : 解除缩进
Ctrl-A : 全选
*Ctrl-Z : 撤销
*Ctrl-Shift-Z : 重做
Ctrl-Y : 重做
Ctrl-Home : 跳到单元开头
Ctrl-End : 跳到单元末尾
Ctrl-Left : 跳到单词左边
Ctrl-Right : 跳到单词右边
Ctrl-Backspace: 删除前面的单词
Ctrl-Delete: 删除后面的单词
*Ctrl-Shift-- : 分割单元
*Ctrl-/: 注释或解除注释
*Ctrl-D: 删除整行
Ctrl-U: 撤销选择
Alt-U: 重新选择
Insert: 切换重写标志
↓: 光标下移
↑: 光标上移
4. 自己动手设置快捷键
![在这里插入图片描述](https://img-blog.csdnimg.cn/5ddfa438849c45ed953b81ad96e51927.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGFuZ3lpMjAwOA==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
四、魔法命令
并且都以%符号作为前缀
IPython魔法命令设计用于简洁地解决标准数据分析中的各种常见问题。魔法命令有两种形式:
- 行魔法(line magic):以单个%字符作为前缀,作用于单行输入
- 单元魔法(cell magic):以两个%%作为前缀,作用于多行输入。
1. 查看魔法命令
%magic: 输出所有魔法指令帮助文档
%lsmagic:列出所有magics命令
%quickref:输出所有魔法指令的简单版帮助文档
%MagicName?:输出某个魔法命令详细帮助文档
查看魔法命令简单版的帮助文档
![在这里插入图片描述](https://img-blog.csdnimg.cn/23eba076673c407e9fed81e46475377b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGFuZ3lpMjAwOA==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
查看time魔法命令的使用帮助文档
![%time](https://img-blog.csdnimg.cn/a3804c2e665140ca988a5daff57fad85.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGFuZ3lpMjAwOA==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
2. 行魔法命令
这里只列出一些常用的行魔法命令:
%run test.py
![在这里插入图片描述](https://img-blog.csdnimg.cn/f71bfc65be3f4250999fc4b3bfde874f.png#pic_center)
%timeit L = [n ** 2 for n in range(100000)]
![在这里插入图片描述](https://img-blog.csdnimg.cn/a855ba412c5b447595f66136013ad325.png#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/c6b1e379384a49ef97fd00852a314a82.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGFuZ3lpMjAwOA==,size_17,color_FFFFFF,t_70,g_se,x_16#pic_center)
注意:魔法方法提供了部分shell命令的功能,另外,我们也可以通过!cmd
的方式运行相关shell命令。但要注意它们的区别:
!
开一个新的progress,执行完之后立即终止。如果执行的命令是切换目录,则不会对当前进程产生影响。%
的操作会持续。如果使用%cd
切换目录后,直接影响是当前进程。
3. 单元魔法命令
-
%%time
:处理多行输入
-
%%timeit
:处理多行输入
%%timeit
L = [n ** 2 for n in range(100000)]
L = [n ** 2 for n in range(100000)]
![在这里插入图片描述](https://img-blog.csdnimg.cn/3a17c18cf95a4877a8e4e638b322a3cd.png#pic_center)
%%writefile
:将当前cell中内容写入文件中
%%writefile test.py
print('hello world!')
![在这里插入图片描述](https://img-blog.csdnimg.cn/49d65509d4e24ed38a7503cb4b5b87f9.png#pic_center)
%%latex
\begin{equation}
\int_0^\infty \frac{x^3}{e^x-1}\,dx = \frac{\pi^4}{15}
\label{eq:sample}
\end{equation}
![在这里插入图片描述](https://img-blog.csdnimg.cn/a119dc9ca616434292bb0afc471be4a1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGFuZ3lpMjAwOA==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
%%script
:写bash、perl、javascript、js 等命令
五、扩展组件
Jupyter让很多人喜欢的原因在于它提供了丰富的插件,包括显示代码执行时间、生成目录、显示变量名、代码块折叠等各种让你舒适的功能。
1. 准备工作
在进行JupyterLab插件安装之前,需要安装node.js 和 npm,可运行如下命令进行安装。
!pip install nodejs npm -i https://pypi.tuna.tsinghua.edu.cn/simple
注意,命令前面加!
是因为在jupyterlab中运行的,如果在终端运行的安装命令,去掉!
2. 插件的安装
进入JupyterLab后,可以在Web上查看已安装组件,搜索安装需要的插件
![在这里插入图片描述](https://img-blog.csdnimg.cn/8ebf69cfcdfe469cb403f77002ce2c0b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGFuZ3lpMjAwOA==,size_12,color_FFFFFF,t_70,g_se,x_16#pic_center)
注意:如果没有出现插件选项卡,可以通过 setting–>Advanced Settings Editor–Extension Manager :在User Overrides 添加语句{“enabled”: true},最后保存,就可以出现插件选项
当然,你也可以使用命令行方式进行插件的查看、安装、更新和删除
查看已安装插件:jupyter labextension list
更新已安装插件:jupyter labextension update --all
安装插件toc:jupyter labextension install @jupyterlab/toc
删除插件toc:jupyter labextension uninstall @jupyterlab/toc
3. 常用插件
-
go to definition: 在Lab笔记本和文件编辑器中跳转到变量或函数的定义。
-
lsp:自动补全、参数建议、函数文档查询、跳转定义等
-
sql: 可以在Lab中连接数据库,并进行sql查询和修改操作
-
drawio:非常棒的流程图工具
- 安装:
pip install jupyterlab-drawio
或者在Web的插件选项中搜索安装
![在这里插入图片描述](https://img-blog.csdnimg.cn/c9cbc81fdcb04500b373c29f70e427d6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGFuZ3lpMjAwOA==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
-
spreadsheet:在Lab上显示excel表格(只读模式)
-
gather: 在Lab中清理代码,恢复丢失的代码以及比较代码版本的工具
-
github: 安装后Lab左侧会出现一个github栏按钮,你可以在里面搜索github项目,并且打开项目里面的文件,如果是notebook文件,能够直接运行代码
-
toc: 方便地在Lab上展示notebook或者markdown的目录
-
LaTeX:编辑并预览LaTeX文档
-
HTML: Lab内部呈现HTML文件
-
plotly(https://github.com/jupyterlab/jupyter-renderers): 展示plotly可视化效果
-
bokeh: 展示bokeh可视化效果
-
variableinspector: 在Lab中展示代码中的变量及其属性,类似RStudio中的变量检查器
-
matplotlib:启用matplotlib可视化交互功能
-
dash: 展示plotly dash交互式面板
-
monitor: 系统监视器是用于显示系统信息(内存和 cpu 使用情况)的 JupyterLab 扩展。它用于监视自己的资源使用情况。
六、远程访问
如果你有一台云服务器,是不是很想在服务器上配置好环境,在任何地方都可以通过浏览器进行访问使用呢?
考虑到服务器一般使用Linux,这里将以ubuntu为例,介绍如何配置远程访问方式,前提是服务器上已经安装好了JupyterLab。(如果是windows,亦是如此操作):
1. 生成配置文件
jupyter lab --generate-config
运行上面的命令后,会生成jupyter的配置文件,比如这里生成的配置文件为:/home/xiaobai/.jupyter/jupyter_notebook_config.py
![在这里插入图片描述](https://img-blog.csdnimg.cn/2ad29bb5e4eb45059913160ae3152567.png#pic_center)
2. 生成访问密码
运行如下代码,并输出访问Jupyter时密码,生成sha1加密密码
from jupyter_server.auth import passwd
passwd()
![在这里插入图片描述](https://img-blog.csdnimg.cn/bb1b7be232c044579f3fb20f1e1bf57c.png#pic_center)
这里输入的密码是lab123
,对应生成的sha1加密密码为:sha1:adbe516d2745:aae3a189602f2078a323c71b413fee063226f7ba
注意:
3. 修改配置文件
在上面命令生成的配置文件末尾添加如下内容,上面的配置文件是
c.ServerApp.ip = '0.0.0.0'
c.ServerApp.password = u'sha1:adbe516d2745:aae3a189602f2078a323c71b413fee063226f7ba'
c.ServerApp.open_browser = False
c.ServerApp.port = 8888
c.ServerApp.allow_root = False
c.ServerApp.notebook_dir = "/home/xiaobai/ipython"
注意:
-
在JupyterLab的旧版本中,将c的设置项从ServerApp
改为NotebookApp
-
allow_root: 如果用root 用户启动 jupyter lab时,必须将其设置为True。实际上不建议使用 root 启动,因为这样可能在浏览器端 cmd 窗口直接暴露 root 权限
-
password: 这里的密码是在第2步骤中生成的sha1加密版的密码。
-
port: 示例中设置的 8888 端口
- 应该是一个未被占用的端口,如果设置的端口被已经被占用,会依次尝试后面的端口,比如8889。
- 是一个被防火墙允许的端口,如果是阿里云、腾讯云等服务器需要在官网修改安全策略。
-
notebook_dir:
- 设置的是工作的文档目录,需要自行选择并创建(否则运行时会报错)
![在这里插入图片描述](https://img-blog.csdnimg.cn/1093be328118473aadebc9056888a377.png#pic_center)
mkdir /home/xiaobai/ipython
4. 启动JupyterLab服务为后台进程
nohup jupyter lab &
![在这里插入图片描述](https://img-blog.csdnimg.cn/813dce226ffb4c2fb706a234f8ccc747.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGFuZ3lpMjAwOA==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
注意:输入的密码是加密之前的密码,比如在第2步中设置的是lab123
,则输入lab123
即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)