Jupyter Notebook 安装和使用保姆级教程!
作者丨Raxxie 来源丨Python数据科学
一、什么是Jupyter Notebook?
1. 简介
2. 组成部分
① 网页应用
② 文档
.ipynb
的JSON
格式文件,不仅便于版本控制,也方便与他人共享。3. Jupyter Notebook的主要特点
编程时具有「语法高亮」、缩进、tab补全的功能。 可直接通过浏览器运行代码,同时在代码块下方展示运行结果。 以富媒体格式展示计算结果。富媒体格式包括:HTML,LaTeX,PNG,SVG等。 对代码编写说明文档或语句时,支持Markdown语法。 支持使用LaTeX编写数学性说明。
二、安装Jupyter Notebook
0. 先试用,再决定
1. 安装
① 安装前提
② 使用Anaconda安装
conda install jupyter notebook
③ 使用pip命令安装
把pip升级到最新版本
pip install --upgrade pip
注意:老版本的pip在安装Jupyter Notebook过程中或面临依赖项无法同步安装的问题。因此「强烈建议」先把pip升级到最新版本。
安装Jupyter Notebook
pip install jupyter
三、运行Jupyter Notebook
0. 帮助
jupyter notebook --help
jupyter notebook -h
1. 启动
① 默认端口启动
jupyter notebook
$ jupyter notebook
[I 08:58:24.417 NotebookApp] Serving notebooks from local directory: /Users/catherine
[I 08:58:24.417 NotebookApp] 0 active kernels
[I 08:58:24.417 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/
[I 08:58:24.417 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
注意:之后在Jupyter Notebook的所有操作,都请保持终端「不要关闭」,因为一旦关闭终端,就会断开与本地服务器的链接,你将无法在Jupyter Notebook中进行其他操作啦。
http://localhost:8888
。其中,“localhost”指的是本机,“8888”则是端口号。② 指定端口启动
jupyter notebook --port <port_number>
jupyter notebook --port 9999
,即在端口号为“9999”的服务器启动Jupyter Notebook。③ 启动服务器但不打开浏览器
jupyter notebook --no-browser
2. 主页面
① 主页面内容
cd
或 cd -
或 cd ~
或cd /Users/
这个命令将会进入你的家目录。 “ ” 是用户名。用户名两边不加尖括号“<>”。
ls
这个命令将会展示你家目录下的文件。
② 设置Jupyter Notebook文件存放位置
⑴ 创建文件夹/目录
Windows用户在想要存放Jupyter Notebook文件的「磁盘」中「新建文件夹」并为该文件夹命名;双击进入该文件夹,然后复制地址栏中的路径。 Linux/macOS用户在想要存放Jupyter Notebook文件的位置「创建目录」并为目录命名,命令为: mkdir
;进入目录,命令为:cd
;查看目录的路径,命令为:pwd
;复制该路径。注意:“ ”是自定义的目录名。目录名两边不加尖括号“<>”。
⑵ 配置文件路径
一个便捷获取配置文件所在路径的命令:
jupyter notebook --generate-config
注意:这条命令虽然可以用于查看配置文件所在的路径,但主要用途是是否将这个路径下的配置文件「替换」为「默认配置文件」。如果你是第一次查询,那么「或许」不会出现下图的提示;若文件已经存在或被修改,使用这个命令之后会出现询问“Overwrite /Users/raxxie/.jupyter/jupyter_notebook_config.py with default config? [y/N]”,即“用默认配置文件覆盖此路径下的文件吗?”,如果按“y”,则完成覆盖,那么之前所做的修改都将失效;如果只是为了查询路径,那么一定要输入“N”。
Windows系统的配置文件路径: C:\Users\\.jupyter\
Linux/macOS系统的配置文件路径: /Users//.jupyter/
或~/.jupyter/
配置文件名: jupyter_notebook_config.py
注意:
ls
命令会发现找不到“.jupyter”文件夹/目录。这是因为凡是以“.”开头的目录都是隐藏文件,你可以通过ls -a
命令查看当前位置下所有的隐藏文件。⑶ 修改配置文件
Windows系统的用户可以使用文档编辑工具或IDE打开“jupyter_notebook_config.py”文件并进行编辑。常用的文档编辑工具和IDE有记事本、Notepad++、vim、Sublime Text、PyCharm等。其中,vim是没有图形界面的,是一款学习曲线较为陡峭的编辑器,其他工具在此不做使用说明,因为上手相对简单。通过vim修改配置文件的方法请继续往下阅读。 Linux/macOS系统的用户建议直接通过终端调用vim来对配置文件进行修改。具体操作步骤如下:
⒜ 打开配置文件
vim ~/.jupyter/jupyter_notebook_config.py
⒝ 查找关键词
/c.NotebookApp.notebook_dir
,这时搜索的关键词已在文档中高亮显示了,按回车,光标从底部切换到文档正文中被查找关键词的首字母。⒞ 编辑配置文件
⒟ 取消注释
⒠ 保存配置文件
ESC
键,从编辑模式退出,回到命令模式。:wq
,回车即成功保存且退出了配置文件。「冒号(:)」 一定要有,且也是「英文半角」。 w:保存。 q:退出。
⒡ 验证
jupyter notebook
打开Jupyter Notebook,此时你会看到一个清爽的界面,恭喜!⒢ 注意
以上所有命令均以「英文半角」格式输入,若有报错,请严格检查这两个条件,「英文」且「半角」。 这里仅介绍了vim编辑器修改配置文件的方法,没有对vim编辑器的详细使用进行讲解,所以无需了解vim编辑器的具体使用方法,只需要按照上述步骤一定可以顺利完成修改! 推荐有时间和经历时学习一下vim编辑器的使用。这款强大的编辑器将会成为你未来工作中的利器。
四、Jupyter Notebook的基本使用
1. Files页面
① 笔记本的基本操作
② 笔记本重命名的两种方式
⑴ 笔记本内部重命名
⑵ 笔记本外部重命名
⑶ 演示
2. Running页面
3. Clusters页面
4. Conda页面
5. Nbextensions页面
五、拓展功能
1. 关联Jupyter Notebook和conda的环境和包——“nb_conda”☆
① 安装
conda install nb_conda
② 使用
可以在Conda类目下对conda环境和包进行一系列操作。
可以在笔记本内的“Kernel”类目里的“Change kernel”切换内核。
③ 卸载
canda remove nb_conda
2. Markdown生成目录
不同于有道云笔记的Markdown编译器,Jupyter Notebook无法为Markdown文档通过特定语法添加目录,因此需要通过安装扩展来实现目录的添加。
conda install -c conda-forge jupyter_contrib_nbextensions
执行上述命令后,启动Jupyter Notebook,你会发现导航栏多了“Nbextensions”的类目,点击“Nbextensions”,勾选“Table of Contents ⑵”
之后再在Jupyter Notebook中使用Markdown,点击下图的图标即可使用啦。
3. Markdown在文中设置链接并定位
[添加链接的正文](#自定义索引词)
<a id=自定义索引词>跳转提示a>
注意:
语法格式当中所有的符号均是「英文半角」。 “自定义索引词”最好是英文,较长的词可以用下划线连接。 “a标签”出现在想要被跳转到的文章位置,html标签除了单标签外均要符合“有头( )必有尾(
)”的原则。头尾之间的“跳转提示”是可有可无的。“a标签”中的“id”值即是为正文中添加链接时设定的“自定义索引值”,这里通过“id”的值实现从正文的链接跳转至指定位置的功能。 例:
1.有跳转提示语
2.无跳转提示语
4. 加载指定网页源代码
① 使用场景
② 方法
%load URL
③ 例
5. 加载本地Python文件
① 使用场景
② 方法
%load Python文件的绝对路径
③ 注意
Python文件的后缀为“.py”。 “%load”后跟的是Python文件的「绝对路径」。 输入命令后,可以按 CTRL 回车
来执行命令。第一次执行,是将本地的Python文件内容加载到单元格内。此时,Jupyter Notebook会自动将“%load”命令注释掉(即在前边加井号“#”),以便在执行已加载的文件代码时不重复执行该命令;第二次执行,则是执行已加载文件的代码。
④ 例
6. 直接运行本地Python文件
① 使用场景
② 方法
%run Python文件的绝对路径
!python3 Python文件的绝对路径
!python Python文件的绝对路径
③ 注意
Python文件的后缀为“.py”。 “%run”后跟的是Python文件的「绝对路径」。 “!python3”用于执行Python 3.x版本的代码。 “!python”用于执行Python 2.x版本的代码。 “!python3”和“!python”属于 !shell命令
语法的使用,即在Jupyter Notebook中执行shell命令的语法。输入命令后,可以按 CTRL 回车
来执行命令,执行过程中将不显示本地Python文件的内容,直接显示运行结果。
④ 例
7. 在Jupyter Notebook中获取当前位置
① 使用场景
② 方法
%pwd
!pwd
③ 注意
获取的位置是当前Jupyter Notebook中创建的笔记本所在位置,且该位置为「绝对路径」。 “!pwd”属于 !shell命令
语法的使用,即在Jupyter Notebook中执行shell命令的语法。
④ 例
8. 在Jupyter Notebook使用shell命令
① 方法一——在笔记本的单元格中
⑴ 语法
!shell命令
在Jupyter Notebook中的笔记本单元格中用英文感叹号“!”后接shell命令即可执行shell命令。
⑵ 例
② 方法二——在Jupyter Notebook中新建终端
⑴ 启动方法
pwd
命令查询当前所在位置的绝对路径。⑵ 关闭方法
⑶ 例
9. 隐藏笔记本输入单元格
① 使用场景
② 方法一
⑴ 代码
from IPython.display import display
from IPython.display import HTML
import IPython.core.display as di # Example: di.display_html('%s:
' % str, raw=True)
# 这行代码的作用是:当文档作为HTML格式输出时,将会默认隐藏输入单元格。
di.display_html('', raw=True)
# 这行代码将会添加“Toggle code”按钮来切换“隐藏/显示”输入单元格。
di.display_html('''''', raw=True)
缺陷:此方法不能很好的适用于Markdown单元格。
⑵ 例
③ 方法二
⑴ 代码
from IPython.display import HTML
HTML('''<script>
code_show=true;
function code_toggle() {
if (code_show){
$('div.input').hide();
} else {
$('div.input').show();
}
code_show = !code_show
}
$( document ).ready(code_toggle);
script>
<form action="javascript:code_toggle()"><input type="submit" value="Click here to toggle on/off the raw code.">form>''')
缺陷:此方法不能很好的适用于Markdown单元格。
⑵ 例
10. 魔术命令
六、增加内核——“ipykernel” ☆
1. 使用场景
场景一:同时用不同版本的Python进行工作,在Jupyter Notebook中无法切换,即“New”的下拉菜单中无法使用需要的环境。 场景二:创建了不同的虚拟环境(或许具有相同的Python版本但安装的包不同),在Jupyter Notebook中无法切换,即“New”的下拉菜单中无法使用需要的环境。
2. 解决方法之命令行模式
① 同时使用不同版本的Python
⑴ 在Python 3中创建Python 2内核
⒜ pip安装
首先安装Python 2的ipykernel包。
python2 -m pip install ipykernel
再为「当前用户」安装Python 2的内核(ipykernel)。
python2 -m ipykernel install --user
注意:“--user”参数的意思是针对当前用户安装,而非系统范围内安装。
⒝ conda安装
首先创建Python版本为2.x且具有ipykernel的新环境,其中“ ”为自定义环境名,环境名两边不加尖括号“<>”。
conda create -n <env_name> python=2 ipykernel
然后切换至新创建的环境。
Windows: activate <env_name>
Linux/macOS: source activate <env_name>
为「当前用户」安装Python 2的内核(ipykernel)。
python2 -m ipykernel install --user
注意:“--user”参数的意思是针对当前用户安装,而非系统范围内安装。
⑵ 在Python 2中创建Python 3内核
⒜ pip安装
首先安装Python 3的ipykernel包。
python3 -m pip install ipykernel
再为「当前用户」安装Python 2的内核(ipykernel)。
python3 -m ipykernel install --user
注意:“--user”参数的意思是针对当前用户安装,而非系统范围内安装。
⒝ conda安装
首先创建Python版本为3.x且具有ipykernel的新环境,其中“ ”为自定义环境名,环境名两边不加尖括号“<>”。
conda create -n <env_name> python=3 ipykernel
然后切换至新创建的环境。
Windows: activate <env_name>
Linux/macOS: source activate <env_name>
为「当前用户」安装Python 3的内核(ipykernel)。
python3 -m ipykernel install --user
注意:“--user”参数的意思是针对当前用户安装,而非系统范围内安装。
② 为不同环境创建内核
⑴ 切换至需安装内核的环境
Windows: activate <env_name>
Linux/macOS: source activate <env_name>
注意:“ ”是需要安装内核的环境名称,环境名两边不加尖括号“<>”。
⑵ 检查该环境是否安装了ipykernel包
conda list
conda install ipykernel
⑶ 为当前环境下的当前用户安装Python内核
若该环境的Python版本为2.x,则执行命令:
python2 -m ipykernel install --user --name <env_name> --display-name "<notebook_name>"
若该环境的Python版本为3.x,则执行命令:
python3 -m ipykernel install --user --name <env_name> --display-name "<notebook_name>"
注意: “ ”为当前环境的环境名称。环境名两边不加尖括号“<>”。 “ ”为自定义显示在Jupyter Notebook中的名称。名称两边不加尖括号“<>”,但「双引号必须加」。 “--name”参数的值,即“ ”是Jupyter内部使用的,其目录的存放路径为 ~/Library/Jupyter/kernels/
。如果定义的名称在该路径已经存在,那么将自动覆盖该名称目录的内容。“--display-name”参数的值是显示在Jupyter Notebook的菜单中的名称。
⑷ 检验
jupyter notebook
启动Jupyter Notebook;在“Files”下的“New”下拉框中即可找到你在第⑶步中的自定义名称,此时,你便可以尽情地在Jupyter Notebook中切换环境,在不同的环境中创建笔记本进行工作和学习啦!3. 解决方法之图形界面模式
CTRL C
关闭Jupyter Notebook的服务器然后重启Jupyter Notebook,在“File”的“New”的下拉列表里就可以找到你的环境啦。七、Jupyter Notebook快捷键
1. Mac与Windows特殊按键对照表
符号 | Mac按键 | Windows按键 |
---|---|---|
⌘ | command | 无 |
⌃ | control | ctrl |
⌥ | option | alt |
⇧ | shift | shift |
↩ | return | return |
␣ | space | space |
⇥ | tab | tab |
⌫ | delete | backspace |
⌦ | fn delete | delete |
- | - | - |
2. Jupyter Notebook笔记本的两种模式
① 命令模式
命令模式将键盘命令与Jupyter Notebook笔记本命令相结合,可以通过键盘不同键的组合运行笔记本的命令。 按 esc
键进入命令模式。命令模式下,单元格边框为灰色,且左侧边框线为蓝色粗线条。
② 编辑模式
编辑模式使用户可以在单元格内编辑代码或文档。 按 enter
或return
键进入编辑模式。编辑模式下,单元格边框和左侧边框线均为绿色。
3. 两种模式的快捷键
① 命令模式
快捷键 | 用途 |
---|---|
F | 查找和替换 |
↩ | 进入编辑模式 |
⌘⇧F | 打开命令选项板 |
⌘⇧P | 打开命令选项板 |
P | 打开命令选项板 |
⇧↩ | 运行当前单元格并选中下一个单元格 |
⌃↩ | 运行选中单元格 |
⌥↩ | 运行当前单元格并且在下方插入单元格 |
Y | 将单元格切换至code状态 |
M | 将单元格切换至markdown状态 |
R | 将单元格切换至raw状态 |
1 | 将单元格设定一级标题 |
2 | 将单元格设定二级标题 |
3 | 将单元格设定三级标题 |
4 | 将单元格设定四级标题 |
5 | 将单元格设定五级标题 |
6 | 将单元格设定六级标题 |
↑ | 选中上方单元格 |
K | 选中上方单元格 |
↓ | 选中下方单元格 |
J | 选中下方单元格 |
⇧K | 向上多选单元格 |
⇧↑ | 向上多选单元格 |
⇧J | 向下多选单元格 |
⇧↓ | 向下多选单元格 |
A | 在上方插入单元格 |
B | 在下方插入单元格 |
X | 剪切选中单元格 |
C | 复制选中单元格 |
⇧V | 粘贴到上方单元格 |
V | 粘贴到下方单元格 |
Z | 撤销删除 |
D, D | 删除选中单元格 |
⇧M | 合并选中单元格,若直选中一个则与下一个单元格合并 |
⌘S | 保存 |
S | 保存 |
L | 转换行号 |
O | 转换输出 |
⇧O | 转换滚动输出 |
H | 显示快捷键帮助 |
I, I | 中断Notebook内核 |
O, O | 重启Notebook内核 |
esc | 关闭页面 |
Q | 关闭页面 |
⇧L | 转换所有单元格行号且设置持续有效 |
⇧␣ | 向上滚动 |
␣ | 向下滚动 |
② 编辑模式
Mac快捷键 | Windows快捷键 | 用途 |
---|---|---|
⇥ | ⇥ | 代码补全或缩进 |
⇧⇥ | ⇧⇥ | 提示 |
⌘] | ⌃] | 向后缩进 |
⌘[ | ⌃[ | 向前缩进 |
⌘A | ⌃A | 全选 |
⌘Z | ⌃Z | 撤销 |
⌘/ | 注释 | |
⌘D | 删除该行内容 | |
⌘U | 撤销 | |
⌘↑ | ⌃↑ | 光标跳转至单元格起始位置 |
⌘↓ | ⌃↓ | 光标跳转至单元格最终位置 |
⌥← | ⌃← | 光标位置左移一个单词 |
⌥→ | ⌃→ | 光标位置右移一个单词 |
⌥⌫ | ⌃⌫ | 删除前边一个单词 |
⌥⌦ | ⌃⌦ | 删除后边一个单词 |
⌘⇧Z | ⌃Y | 重做 |
⌘⇧U | ⌃⇧Z | 重做 |
⌘⌫ | ⌃⌫ | 删除该行光标左边内容 |
⌘⌦ | ⌃⌦ | 删除该行光标右边内容 |
⌃M | ⌃M | 进入命令模式 |
esc | esc | 进入命令模式 |
⌘⇧F | 打开命令选项板 | |
⌘⇧P | 打开命令选项板 | |
⇧↩ | ⇧↩ | 运行当前单元格并选中下一个单元格 |
⌃↩ | ⌃↩ | 运行选中单元格 |
⌥↩ | ⌥↩ | 运行当前单元格并且在下方插入单元格 |
⌃⇧- | ⌃⇧- | 以光标所在位置分割单元格 |
⌘S | ⌃S | 保存 |
↓ | ↓ | 下移光标 |
↑ | ↑ | 上移光标 |
4. 查看和编辑快捷键
① 查看快捷键
② 编辑快捷键
⑴ 方法一
⑵ 方法二
③ 例
八、关闭和退出
1. 关闭笔记本和终端
① 方法一
注意:此方法只能关闭笔记本,无法关闭终端。
② 方法二
注意:此方法可以关闭任何正在运行的终端和笔记本。
③ 注意
④ 演示
2. 退出Jupyter Notebook程序
Mac用户: control c
Windows用户: ctrl c
y
即可关闭服务器,这才是彻底退出了Jupyter Notebook程序。此时,如果你想要通过输入刚才关闭网页的网址进行访问Jupyter Notebook便会看到报错页面。评论