5.5.jupyter使用笔记
安装
anaconda 集成了 jupyter notebook,直接安装 anaconda 是使用 jupyter 的最简单方法。如果觉得 anaconda 太重了,直接使用 conda 或者 pip 安装jupyter也是没问题的。具体的安装过程参考 jupyter 的官网的教程:Installing the Jupyter Software。
让代码窗口输出全部结果
- 将此代码放置在jupyter单元中:
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
在Windows中,以下步骤会使更改永久生效。应该适用于其他操作系统。您可能必须更改路径。
C:\Users\your_profile\\.ipython\profile_default
做一个ipython_config.py文件与下面的代码profile_defaults:
c = get_config()
c.InteractiveShell.ast_node_interactivity = "all"
print
函数
快捷键使用指南
Jupyter Notebook 有两种键盘输入模式。即命令模式和编辑模式,这与 Vim 有些类似。在编辑模式下,可以往cell中键入代码或文本,此时命令模式下的快捷键不生效。在命令模式下,可以用快捷键命令运行单元格,移动单元格,切换单元格编辑状态等等,此时编辑模式下的快捷键不生效。
从命令模式进入编辑模式需按 Enter
键,从编辑模式切换到命令模式需按 Esc
键。
以下两表分别是对命令和编辑两种模式下快捷键的简单说明:
命令模式快捷键(按 Esc 键开启)
快捷键 | 作用 | 说明 |
---|---|---|
Enter | 转入编辑模式 | |
Shift-Enter | 运行本单元,选中下个单元 | 新单元默认为命令模式 |
Ctrl-Enter | 运行本单元 | |
Alt-Enter | 运行本单元,在其下插入新单元 | 新单元默认为编辑模式 |
Y | 单元转入代码状态 | |
M | 单元转入 markdown 状态 | |
R | 单元转入 raw 状态 | |
1 | 设定 1 级标题 | 仅在 markdown 状态下时建议使用标题相关快捷键,如果单元处于其他状态,则会强制切换到 markdown 状态 |
2 | 设定 2 级标题 | |
3 | 设定 3 级标题 | |
4 | 设定 4 级标题 | |
5 | 设定 5 级标题 | |
6 | 设定 6 级标题 | |
Up | 选中上方单元 | |
K | 选中上方单元 | |
Down | 选中下方单元 | |
J | 选中下方单元 | |
Shift-K | 连续选择上方单元 | |
Shift-J | 连续选择下方单元 | |
A | 在上方插入新单元 | |
B | 在下方插入新单元 | |
X | 剪切选中的单元 | |
C | 复制选中的单元 | |
Shift-V | 粘贴到上方单元 | |
V | 粘贴到下方单元 | |
Z | 恢复删除的最后一个单元 | |
D,D | 删除选中的单元 | 连续按两个 D 键 |
Shift-M | 合并选中的单元 | |
Ctrl-S | 保存当前 NoteBook | |
S | 保存当前 NoteBook | |
L | 开关行号 | 编辑框的行号是可以开启和关闭的 |
O | 转换输出 | |
Shift-O | 转换输出滚动 | |
Esc | 关闭页面 | |
Q | 关闭页面 | |
H | 显示快捷键帮助 | |
I,I | 中断 NoteBook 内核 | |
0,0 | 重启 NoteBook 内核 | |
Shift | 忽略 | |
Shift-Space | 向上滚动 | |
Space | 向下滚动 |
编辑模式快捷键( 按 Enter 键启动)
快捷键 | 作用 | 说明 |
---|---|---|
Tab | 代码补全或缩进 | |
Shift-Tab | 提示 | 输出帮助信息,部分函数、类、方法等会显示其定义原型,如果在其后加 ? 再运行会显示更加详细的帮助 |
Ctrl-] | 缩进 | 向右缩进 |
Ctrl-[ | 解除缩进 | 向左缩进 |
Ctrl-A | 全选 | |
Ctrl-Z | 撤销 | |
Ctrl-Shift-Z | 重做 | |
Ctrl-Y | 重做 | |
Ctrl-Home | 跳到单元开头 | |
Ctrl-Up | 跳到单元开头 | |
Ctrl-End | 跳到单元末尾 | |
Ctrl-Down | 跳到单元末尾 | |
Ctrl-Left | 跳到左边一个字首 | |
Ctrl-Right | 跳到右边一个字首 | |
Ctrl-Backspace | 删除前面一个字 | |
Ctrl-Delete | 删除后面一个字 | |
Esc | 切换到命令模式 | |
Ctrl-M | 切换到命令模式 | |
Shift-Enter | 运行本单元,选中下一单元 | 新单元默认为命令模式 |
Ctrl-Enter | 运行本单元 | |
Alt-Enter | 运行本单元,在下面插入一单元 | 新单元默认为编辑模式 |
Ctrl-Shift-- | 分割单元 | 按光标所在行进行分割 |
Ctrl-Shift-Subtract | 分割单元 | |
Ctrl-S | 保存当前 NoteBook | |
Shift | 忽略 | |
Up | 光标上移或转入上一单元 | |
Down | 光标下移或转入下一单元 | |
Ctrl-/ | 注释整行/撤销注释 | 仅代码状态有效 |
注: 如果快捷键被系统中的其它应用占用,则可能会失效
在任意目录下打开notebook
在该目录下:shift + 右键 👉 打开powershell,输入jupter notebook
自定义主题
通过pip
安装jupyterthemes
package:
# 安装
pip install jupyterthemes
# 更新jupyterthemes
pip install --upgrade jupyterthemes
jupyterthemes
package之后,就可以在命令行输入jupyterthemes
的命令:
# 列出所有安装好的主题
jt -l
# 使用帮助
jt -h
具体使用方法参见:jupyterthemes官方说明
安装扩展
安装jupyter_contrib_nbextensions
包。该插件并不是jupyter notebook官方的插件。具体参考Unofficial Jupyter Notebook Extensions和为Jupyter Notebook安装扩展并启用Configurator。
# 安装
pip install jupyter_contrib_nbextensions
# 或者通过conda安装
conda install -c conda-forge jupyter_contrib_nbextensions
# 激活
jupyter contrib nbextension install --user
# 启用
jupyter nbextensions_configurator enable --user
输出带有中文的pdf
jupyter notebook本身不能输出pdf,输出pdf依赖于$\LaTeX$引擎。目前,带有中文的ipynb文件输出为pdf会报错,主要原因是jupyter的$\LaTeX$模板设置了$\text{pdf}\LaTeX$引擎,但是Pdf$\LaTeX$不可以直接编译中文文档的。因此,需要把jupyter的$\LaTeX$引擎改为$\text{Xe}\LaTeX$引擎。
修改模板,模板位置为:...\site-packages\nbconvert\templates\latex\article.tplx,将latex模板类由article改为ctexart。
原来的代码:
((* block docclass *))
\documentclass[11pt]{article}
((* endblock docclass *))
((* block docclass *))
\documentclass[13pt]{ctexart}
((* endblock docclass *))
\documentclass[11pt]{article}
\usepackage{xeCJK}
% 如果设置mainfont,必须设置为已安装的中文字体,例如微软雅黑。
%\setCJKmainfont{SourceHanSansCN-Light}
\geometry{a4paper,left=2cm,right=2cm,top=1cm,bottom=1cm}
nbconvert failed: PDF creating failed, captured latex output:
This is XeTeX, Version 3.14159265-2.6-0.99999 (TeX Live 2018/W32TeX) (preloaded format=xelatex)
restricted \write18 enabled.
entering extended mode
! Undefined control sequence.
<*> .\notebook
.tex
?
! Emergency stop.
<*> .\notebook
.tex
No pages of output.
Transcript written on ?.
原来的代码:
writer = Instance("nbconvert.writers.FilesWriter", args=(), kw={'build_directory': '.'})
writer = Instance("nbconvert.writers.FilesWriter", args=(), kw={'build_directory': ''})
错误的路径:
xelatex .\notebook.tex
xelatex notebook.tex
版本控制
Save and CheckPoint 和 Revert to CheckPoint。
使用非Python内核
jupyter 不仅仅可以使用 Python 内核,也可以使用其他语言作为后端。
C#、F#内核
如何为jupyter安装C#、F#的内核可以参考微软的教程:.NET Core with Jupyter Notebooks – Available today | Preview 1