3 安装使用Jupyter Notebook
| 术语 | 比喻 |
|---|---|
| 环境 | 房间 |
环境创建conda create -n 环境名称 |
新建一个房间 |
环境激活conda activate 环境名称 |
进入一个房间 |
| 环境管理 装包 conda install 包名称或pip install 包名称卸载包 conda remove 包名称或pip uninstall 包名称 |
装修一个房间: 给房间添置家具 从房间移除家具 |
在某个环境中安装Jupyterpip install jupyter |
在某个房间中添置一个叫做jupyter的家具 |
在某个环境中注册ipython核python -m ipykernel install --user --name 核名称 --display-name "显示的核名称"(要求已经在环境中安装了jupyter) (注册核后,使用Jupyter Notebook时能通过核在相应环境中工作) |
给某个房间配一把钥匙 钥匙的名字叫 核名称钥匙上有贴纸,上书 显示的核名称配这种钥匙的前提是已经添置了家具jupyter |
环境删除conda env remove -n 要删除的环境名称 |
砸毁一个房间 |
3.1 Jupyter Notebook是什么
3.1.1 文学编程
著名程序员高德纳推广了将文字说明与程序有机结合的思想,这种做法有助于代码与思想的传播,称为文学编程(literate programming)。 本教程融合了代码与文本,也是一种文学编程。 计算笔记本(computational notebook)是文学编程的另一种典型实践:笔记本可以包含并执行任意代码,笔记本文件可以用于分享数据、工作流程、可视化、代码等。
Jupyter项目的核心目的是提供计算笔记本交互式计算的工具和标准。此项目最早支持的编程语言是Julia,Python,R,因此得名Jupyter。 Jupyter项目有两个主要的笔记本编辑程序:Jupyter Notebook和JupyterLab。本教程介绍Jupyter Notebook,JupyterLab是Jupyter Notebook的进阶版。
3.1.2 Jupyter Notebook工作原理
Jupyter Notebook服务是多个独立模块共同运行的结果:
- Jupyer 内核:笔记本编辑器为每个笔记本文件创建一个REPL1,称为内核(kernel)。Jupyter计划的前身IPython就是一个高级的REPL。
- Jupyter Notebook的界面是网页应用,用浏览器查看。
- Jupyter Server(服务器)与内核通信。
模块化使得拓展Jupyter变得容易。 如,其他人可以在Jupyter协议的框架下,编写全新的界面实现新的编辑功能,而不需考虑由Jupyter服务器负责的核新建与管理。
Jupyter用.ipynb文件存储笔记本文件。 .ipynb格式是一种 json 文档,将笔记本单元格、程序输出和元数据存放在结构化的文本文件中。
3.2 安装Jupyter
- 在Anaconda Prompt中,用
conda install jupyter在当前环境中安装jupyter。(注意要先激活对应的环境) 如果conda install失败,尝试pip install jupyter。
如果你的环境中没有pip工具,可以用conda install pip在当前环境安装pip。
- 安装成功后,在Anaconda Prompt中输入
jupyter --version,显示Jupyter核心包信息。( 图 3.1 )
3.3 注册核kernel
在当前环境中注册核:
python -m ipykernel install。此命令有多个选项,用
python -m ipykernel install --help可查看( 图 3.2 )。部分命令如下:--user,仅为当前用户(而非全系统)注册核--name NAME,为核取名为NAME,NAME可以由你自定义,但请用英文字母数字等常规ASCII字符取名。适用于你需要使用多个核的场景,系统根据NAME来区分各个核。--display-name DISPLAY_NAME,指定核的显示名称为DISPLAY_NAME,DISPLAY_NAME应该被英文引号包围。此选项适用于你需要使用多个核的场景,jupyter notebook的网页界面会用DISPLAY_NAME来显示各个核。推荐用英文字母数字等常规ASCII字符取名。
查看当前环境中已注册的核:
jupyter kernelspec list删除特定核:
jupyter kernelspec remove 核名称
python -m ipykernel install的帮助文档
Anaconda Prompt
# 例子
# 为当前用户、在当前环境注册一个核
# 核名称为tutorial,此核在notebook网页应用界面中显示为"Python程序基础"
# 但是推荐display-name和name都用英文字母与数字,不要用中文
python -m ipykernel install --user --name tutorial --display-name "Python程序基础"
# 查看已注册的核
jupyter kernelspec list
3.4 Jupyer Notebook使用
3.4.1 启动Jupyter Notebook
根据你安装的是Anaconda还是Miniconda,有两种方式:
- 如果安装的是Miniconda,在Anaconda Prompt中输入jupyter notebook,回车。(图 3.7)
- 如果安装了完整的Anaconda,开始菜单中的Anaconda文件夹下,有Jupyter Notebook图标,点击之。(图 3.8)
不管使用哪种方法,Anaconda Prompt都会显示notebook服务器的一些信息( 图 3.7 ),同时浏览器会打开notebook仪表板( 图 3.9 ),默认URL是http://localhost:8888/tree。
启动Jupyter服务器后,类似 图 3.7 中显示服务器信息的窗口不能随便关闭——关闭此窗口就会关闭Jupyter服务器,将导致不可使用Jupyter Notebook。只有在使用完毕Jupyter Notebook后,才可关闭此窗口。
3.4.2 新建notebook
在仪表板中导航到目标文件夹,新建的ipynb文件将位于这个文件夹中。 图 3.9 中,当前文件夹是Miniconda3的安装目录,也是当前用户的家目录。如果你不清楚应该把新建的ipynb文件放在哪个目录中,你可以将其放在桌面( 图 3.9 中的
Desktop文件夹)。点击左上角
File-New-Notebook以新建notebook。此时会提示你选择kernel,选择之前注册的核即可。(图 3.10)点击Jupyter logo旁边的文件名(默认是Untitled1),重命名ipynb文件。(图 3.11)
图 3.10: 创建notebook时选择核
图 3.11: 重命名ipynb文件。
3.4.3 打开既有notebook
本课程的教学材料中有一些.ipynb文件。将这些.ipynb下载到本地, 启动notebook服务后,导航到这些.ipynb文件所在的文件夹,单击这些笔记本文件就可打开。
直接双击ipynb文件,一般会通过文本编辑器打开一个json文件。
不启动Jupyter服务器,是无法通过浏览器正确渲染notebook文件内容并使用笔记本的全部功能的。
3.4.4 核操作
菜单中的Kernel选项中,有一些核操作:
Interrupt Kernel,中断当前执行的代码,程序死机时用。中断核后,此前运行产生的数据都还在。
Restart Kernel…,重启核,会清空此前运行程序产生的数据。当需要打断某个持续运行的代码框(该代码框前的方括号中显示
*时),可以点击此选项。
[*],说明此单元格的代码正在运行。如果不想等待代码运行结束(可能是因为正在运行的是永不结束的死循环,也可能是死机,或是程序需要很长时间才能运行完而你就是不想等了,……),可以通过Interrupt Kernel或Restart Kernel中断代码的运行。
Reconnect to Kernel,与Kernel连接中断时,用来重连。
Shut Down Kernel,关闭当前notebook文件使用的核;Shut Down All Kernels…,关闭所有运行中的核。
仅仅关闭显示某个ipynb文件的浏览器页面,并不关闭相应的核。 重新打开该ipynb文件后,还可以对该文件进行编辑,且此前运行产生的结果仍然保留着。
要真正停止程序运行,需关闭核(通过Kernel菜单中的Shut Down Kernel或Shut Down All Kernels ...)。 关闭核后,Jupyter服务器还在运行,还可以重启核新建ipynb文件。
要停止全部Jupyter服务,可以点击菜单中的File-Shut Down,或关闭用于启动Jupyter Notebook的Anaconda Prompt窗口。
Jupyter Notebook的写作我们用一个ipynb文件展示,因此不在这里展开。
3.5 其他问题
3.5.1 启动jupyter notebook浏览器不打开
有时尝试启动Jupyter Notebook后,网页界面不会自动打开,Anaconda Prompt会提示”To access the server, open this file in a browser:“(要获取服务器,将此文件在浏览器中打开)( 图 3.14 )。只要复制下面的链接,在浏览器中打开,就可以使用Jupyter Notebook了。
3.5.2 已注册的核在网页界面中不显示
首先,用jupyter kernelspec list确认存在一些已经注册的核。
然后运行python -m ipykernel install,手动为该环境注册核。
这个问题的产生原因不明确,可能是设置文件中有一些问题。 经验证,用python -m ipykernel install能修复这些问题。
3.6 练习
- 在本课程的环境中安装Jupyter
- 在此环境中注册一个Jupyter内核。如果不知道给内核起什么名或显示名称,可以用自己的名字拼音。
- 打开一个
.ipynb文件,使用2中注册的核。 - 新建一个
.ipynb文件,将其重命名,使用2中注册的核。
3.7 参考资料
REPL(read, evaluate, print, loop)是一种编程技术,允许程序员交互式写代码、运行代码,返回结果,然后重复【写代码、运行代码,返回结果】的过程。此过程中产生的数据始终保存在内存中。↩︎