2021.1.16 更新
jupyter notebook 已过时,推荐使用 jupyter lab,引入了多窗口模式,类似集成开发环境,比 jupyter notebook 功能更强大。
原本关于 jupyter notebook 的内容
引言
jupyter notebook 是一个非常好用的交互式编程环境,界面友好,调试方便。jupyter 是 Julia, Python, R 三种语言的缩写,这三种语言也是 jupyter 支持的核心语言。
在 Ubuntu 系统下的安装
jupyter notebook的安装非常简单,首先确认一下系统的 python 版本为 python 3 并且安装了 pip3,具体设置可以参考这篇文章。然后用如下命令安装:
python3 -m --user pip install jupyter
上述安装如果遇到问题,可以参考 jupyter notebook 官网的详细安装教程 .
打开jupyter notebook也非常简便,只需命令:
jupyter notebook
如果是 Ubuntu 18.04 系统,用如下命令安装:
sudo apt install jupyter-notebook
然后用
jupyter-notebook
打开。
运行 jupyter notebook 之后界面如下:
使用
创建一个新文件
进入 jupyter notebook 主界面后,在右上角可以新建一个你想要的文档类型。
上图中,jupyter 的 kernel 只有一个 Python 2,所以目前只能基于 Python 2 创建编程环境。可以手动增加 jupyter 的 kernel,例如将某一 python 虚拟环境设置为 jupyter kernel (参考本博客中的另一篇文章),也可以添加另一种语言的 kernel,例如 Julia,未来会有文章专门介绍 Julia 的使用方法。
新建文件后,界面主要包含 4 部分,如图所示:
从上到下依次为:
- 标题栏:点击标题(例如 Untitled)可更改
- 菜单栏:File, Edit, View, ...
- 工具栏: 包括一些快捷按钮,如保存,新建,剪切等
- 编辑区:输入代码或者其他描述语言的地方。
单元格设置
编辑区可以由很多个单元格组成,例如上图中显示 In [ ]: 的框就是一个单元格。
单元格有 4 种格式, jupyter notebook 工具栏后部有个下拉菜单选项,可以选择单元格的格式
- Code —— 代码格式
- Markdown —— Markdown 编辑器格式 ,Markdown 语法和编辑器的使用可以参考本文
- Heading —— 加入标题,例如一级标题、二级标题等,但是选择该项时会提示:建议用 Markdown 的方式书写标题,不要再单独选择 Heading 这种单元格的格式了。所以,我猜想后续版本的 jupyter 很可能把这种格式废除掉。
- Raw NBConvert —— 说实话,我从来没用过这种单元格格式,据官网介绍,大概意思是将 jupyter notebook 转换成其他格式(如 HTML, latex)时进行的一些特别的输出格式设置。
单元格默认是 code 格式,如果想切换成其他格式,一种方式是在上边的下拉菜单中选择,另一种方式是用快捷键,更有效率。例如点击单元格左端(不要点进单元格),按 m 键将单元格设置为 Markdown 格式,按 y 键设置为 code 格式。
书写与保存
当程序很长的时候,我们可以把整个程序分成的若干小段,写入多个单元格内,每个单元格都可以单独运行。这样的好处是方便调试,例如有时候只修改了程序中间的一小段代码,或者想单独看某一段代码的输出,就可以只运行相关的单元格,个人非常喜欢这个功能的设计。另外,单元格还可以上下移动,改变彼此之间的顺序。
像很多文件一样,Ctrl + S 快捷键可以保存 jupyter notebook 的文件,默认保存为 ipynb 格式,这是沿用了 jupyter notebook 的前身 —— ipython notebook 的扩展名。
常用快捷键
Ctrl + Enter —— 执行单元格代码,并停留在本单元格
Shift + Enter —— 执行单元格代码,并移动到下一个单元格
Alt + Enter —— 执行单元格代码,新建并移动到下一个单元格
所有的快捷键可以在菜单栏中的 help --> keyboard shortcuts 中找到,如下
添加左边栏目录
如果 note 写的比较长,最好有个目录,方便查找。安装目录插件的详细方法见此处。总结一下只有 3 步:
- 安装 python package
pip install https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tarball/master --user
- 安装 javascript 和 css files
jupyter contrib-nbextension install --user
-
打开 jupyter notebook,可以看到菜单栏最后多了一项 Nbextensions
进入 Nbextensions, 选中 Table of Contents (2)
此时,打开或新建 Jupyter notebook 文件,就可以看到左侧的导航栏
可能遇到的问题
明明在命令行中用 pip 安装了某些 python package,在 jupyter 中调用时却提示没有找到。
可能的原因是:安装 package 的那个版本不是 jupyter 用的版本。
- 查看系统中 python 版本:
which python
,可以定位到系统默认的版本,一般是/usr/bin/python
,它本身是一个超链接,指向 python2 或者 python3 的某个具体版本。
例如:
$ which python
/usr/bin/python
$ ls -l /usr/bin/python*
lrwxrwxrwx 1 root root 9 10月 27 14:25 /usr/bin/python -> python3.6
lrwxrwxrwx 1 root root 9 4月 16 2018 /usr/bin/python2 -> python2.7
-rwxr-xr-x 1 root root 3628976 9月 30 21:38 /usr/bin/python2.7
lrwxrwxrwx 1 root root 33 9月 30 21:38 /usr/bin/python2.7-config -> x86_64-linux-gnu-python2.7-config
lrwxrwxrwx 1 root root 16 4月 16 2018 /usr/bin/python2-config -> python2.7-config
-rwxr-xr-x 1 root root 365 8月 23 2016 /usr/bin/python2-qr
lrwxrwxrwx 1 root root 9 9月 7 17:03 /usr/bin/python3 -> python3.6
-rwxr-xr-x 2 root root 4526456 10月 8 20:12 /usr/bin/python3.6
lrwxrwxrwx 1 root root 33 10月 8 20:12 /usr/bin/python3.6-config -> x86_64-linux-gnu-python3.6-config
-rwxr-xr-x 2 root root 4526456 10月 8 20:12 /usr/bin/python3.6m
lrwxrwxrwx 1 root root 34 10月 8 20:12 /usr/bin/python3.6m-config -> x86_64-linux-gnu-python3.6m-config
...
- 查看 jupyter 用的 python 版本:
在 jupyter 中执行
import sys
sys.executable # 返回 jupyter 调用的 python 路径
要确保上述两个 python 版本相同。
总结
jupyter notebook 是一个很好用的交互式编程工具,很方便学习 python, julia 等语言。本文只是简单介绍,感兴趣的读者可以去官网在线 doc 深入学习。
Written by YY
Revised by QP