介绍
Jupyter是从IPython中拆分出来的独立应用,同事也是开源软件,主要用途是interactive data science and scientific computing。从IPython迁移到Jupyter,主要是配置和数据等路径的修改,参见官方文档。目前版本5.x(6.x, 2018年6月)。
几个概念:
- IPython(interactive computing in Python)通常指的是Python的一种REPL Shell,比官方提供Shell功能更强大(Tab补全、Magic)。补:IPython 6.x开始不再支持和兼容Python 2。
- Jupyter是对IPython和Python解释器分离出来而独立的一个应用(起源于2014年,IPython 4.x开始,IPython仅仅作为基础的内核),不仅支持Python,还有Ruby、Julia等。
-
Jupyter notebook是一个基于Web的应用,起源于IPython notebook(所以文件保存的后缀是
.ipynb
,本质是JSON文件),也就是本文主要内容。 - 此外还有相关的nbviewer(ipynb文件的格式渲染和pdf/html输出工具)和jupyterhub(提供 jupyter文档托管服务)
Jupyter特点:
代码(包括运行结果)和文档(包括公式和图表)都能同时展示,以及Python语言和相关库的优势。
相关参考实例的网站:https://nbviewer.jupyter.org/
安装,测试
在线使用
本地使用(安装)
- 方式1:需要先安装Python再安装Jupyter
- 安装Python(这里使用Python 3)
- pip安装Jupyter(会自动包含IPython kernel等组件)
$ pip3 install --upgrage pip # 保证pip是最新版本
$ pip3 install jupyter
- 方式2:安装Anaconda(已包含Python和Jupyter等)推荐
升级
$ conda update jupter
$ pip3 install --upgrade jupyter
说明:
代码框中开始的$
表示命令行提示符,无需输入;非开始的#
表示注释的开始
补充:如何实现Jupyter Notebook同时支持Python 2和Python 3
在已安装Python 3情况下(例如使用Anaconda3安装);安装其他内核参见:https://github.com/jupyter/jupyter/wiki/Jupyter-kernels
# 建立一个Python2的虚拟环境
conda create -n py2 python=3
# 激活环境
source activate py2
# 安装ipykernel
conda install ipykernel
# 查看
python -m ipykernel install --user
# 启动notebook,可以看得Python2和Python 3内核
jupyter notebook
同时支持Python 2和Python 3
Jupyter Notebook
组件
Jupyter中包括notebook, console和qtconsole。其中:
-
console
类似ipython; -
qtconsole
使用qt实现的终端,可以在终端显示图片等高级特性; -
notebook
是基于浏览器Web技术的开发环境,可以进行写作文档和执行代码,包括web application和notebook documents;-
web application
等同于一个编辑器,除了支持普通代码,还包括富媒体信息如HTML,LaTex,Markdown,MathJax和各种图像格式; -
notebook documents
以JSON格式保存为.ipynb文件,可以通过bfconvert
转成HTML、PDF等格式。
-
运行
启动Notebook服务器:
$ jupyter notebook
$ jupyter notebook my_notebook.ipynb # 打开my_notebook.ipynb
$ jupyter notebook --port 9999 # 设置自定义端口
$ jupyter notebook --no-brower # 启动时不打开浏览器
$ jupyter notebook --ip="*" # 允许任意IP连接,可用于局域网共享
$ jupyter notebook --help # 帮助信息
补充:
- Linux中避免SSH退出导致进程终止
nohup jupyter notebook
- 查看正在运行的Notebook(可以方便查看tokens)
jupyter notebook list
在浏览器中输入http://localhost:8888
,打开Notebook Dashbord(仪表盘),可以建立:文本文件(Text File,txt)、文件夹(Folder)、命令行(Terminal)、笔记本(Notebook, ipynb)。
浏览器页面区域可分为 4 块,从上到下依次为:
- 标题栏:可修改文件名(默认Untitled)
- 菜单栏
- 工具栏
- 编辑区:代码和文档区域
jupyter notebook可以启动多个,端口号会自动累加。
相关操作
notebook document的结构
- Code cells:用于写代码 (命令模式中
Y
键设置) - Markdown cells:写markdown文档(命令模式中
M
键设置) - Raw Cells: 代码或文档的输出信息
快捷键
快捷键的操作可以在文档上部的菜单栏/工具栏中找到。
-
Shift-Enter
: 运行当前cell并自动跳转到下一个cell(如果后面没有新的cell,会新建一个)【=菜单栏Cell->Run Cells】 -
Ctrl-Enter
: 仅运行当前cell(指针位置不改变) -
Alt-Enter
: 执行当前cell并插入一个新的cell -
Enter
: 进入编辑模式,(框的颜色变为绿色,等于鼠标点击) -
Esc
: 进入命令模式(框的颜色变为蓝色) -
Ctrl+Shift+P
:打开命令面板(Firefox中快捷键冲突,可使用扩展Menu Wizard
禁用相关快捷键),快速查找命令
以下需要在命令模式(Esc
进入,类似vim)中有效,主要是文档编辑命令:
- 删除cell: 两次
D
- 撤销删除:
Z
- 注释/取消注释:
Ctrl+/
- cell显示行号:
L
- cell首行转为一/二……六级标题(Head N):
1
或2
…… - 选中多个cell:
Shift+J/K
(J向下,K向上) - 合并:
Shift +M
- 查找和替换:
ESC+F
(不包括代码输出内容) - 输出区域折叠:
ESC+O
文本编辑:
- 多光标操作: 按
Alt
+鼠标点击或拖拽
更多参见菜单栏【Help->Keyborad shortcuts】
高级操作
- 代码补全:TAB键
- 函数查询:函数名前/后加
?
(括号可选)
import math
import numpy as np
?math.cos()
np.array?
- 执行系统命令
在命令(系统相关)前加入!
,Shift-Enter
执行。如显示目录 - 魔法函数:以
%
开头
%lsmagic # 查看所有魔法命令
%run ./xx.ipynb # 运行一个jupyter notebook,并非导入python模块
%matplotlib inline # 采用行内模式,在绘图输出函数后加冒号可抑制输出结果
- 调用其他语言核:使用
%%
%%bash
%%HTML
%%python2
%%python3
%%ruby
%%perl
安装其他语言的核,如R,可以用:
conda install -c r r-essentials
配置
配置文件
jupyter notebook --generate-config
浏览器Token问题
默认启动时,如果手动输入URL,需要填写token。
解决(还是有问题,待解决):
- 生成sha1密钥
在Jupyter Notebook新建文件,输入并执行,输入密码后获得sha1:xxx
的密钥值
from notebook.auth import passwd passwd()
- 将密钥值写入配置文件
用户路径/.jupyter/jupyter_notebook_config.py
该配置文件可通过jupyter notebook --generate-config
生成,文件末尾写入内容:c.NotebookApp.password = 'sha1:xxx' # 可以找到相应值,取消注释并修改
字体和主题
- 方式1: 参见扩展管理器,安装jupyter-thmes github项目站点配置
- 方式2:修改custom.css的配置文件
- 方式3:浏览器中修改自定义的字体
方式4: 浏览器安装stylish扩展(此扩展因窃取用户浏览历史等的安全问题已被主流浏览器下降,因尽快删除)
相关讨论知乎:jupyter notebook中显示字体如何调整?
扩展管理器
jupyter_contrib_nbextensions github网站
安装使用:jupyter contrib nbextension install --user
- jupyter Dashboard
- 主题
jupyter-thmes github
使用jt命令设置:
$ jt -h # 帮助
$ jt -l # 列出可用的主题
$ jt -t chesterish # 使用某个主题,需要重启Jupyter Notebook
其实是在用户路径
~/.jupyter/custom/custom.css
定义了样式
或Anaconda3\Lib\site-packages\notebook\static\custom\custom.css
- 分享: HTML格式分享,使用菜单栏【File->Download as -> HTML】导出HTML格式文件
Linux非Bash环境使用注意
- Zsh
- Fish: 存在source activate错误
set PATH $PWD/anaconda3/bin $PATH
source (conda info --root)/etc/fish/conf.d/conda.fish
参考
- jupyter notebook 官方文档
- tina_ttl, Python·Jupyter Notebook各种使用方法记录·持续更新, CSDN, 2016-05-14
- Josh Devlin/原作, 姜范波/翻译 , Jupyter Notebook的27个秘诀,技巧和快捷键, 作业部落, 2016-10-17
- Kane Blueriver, IPython 与 jupyter 相关概念介绍, 个人博客, 2017-09-17
- 苏尚君, Jupyter 笔记, 简书, 2016-05-02
- 黄宝臣, 「工具控」| TL001. 装扮你的Jupyter, 知乎, 2017-04
网友评论