
1.2.1 基本操作
1.运行IPython Notebook
使用系统的命令行工具切换到保存Notebook文档的目录,输入ipython notebook命令即可启动Notebook服务器,并通过系统的默认浏览器打开地址http://127.0.0.1:8888。建议读者最好使用Firefox或Chrome浏览Notebook。
本书提供的代码目录scipybook2中包含了一个启动Notebook的批处理文件run_notebook.bat。运行该批处理文件之后,在浏览器的Notebook列表中依次单击01-intro→intro-100-ipython.ipynb,就能打开与本节对应的Notebook文档。
如图1-8所示,Notebook采用浏览器作为界面,首页显示当前路径下的所有Notebook文档和文件夹。单击“New Notebook”按钮或文档名将打开一个新的页面,同时启动一个运算核进程与其交互。每个打开的Notebook页面都有单独的Python进程与之对应,在Notebook中输入的所有命令都将由浏览器传递到服务器程序,再转发到该进程运行。文档的读取和保存工作由服务器进程完成,而运算核进程则负责运行用户的程序。因此即使用户程序造成运算核进程异常退出,也不会丢失任何用户输入的数据。在关闭服务器进程之前,确保所有的Notebook都已保存。

图1-8 IPython Notebook架构示意图
Notebook有自动存档和恢复功能,可通过File → Revert to Checkpoint菜单恢复到以前的版本。此外为了确保安全,打开他人创建的Notebook时,不会运行其中的Javascript程序和显示SVG图像。如果确信来源可靠,可以通过File → Trusted Notebook信任该Notebook。
2.操作单元
notebooks\01-intro\notebook-train.ipynb:Notebook的操作教程,读者可以使用它练习Notebook的基本操作。
Notebook由多个竖向排列的单元构成,每个单元可以有以下两种样式:
●Code:Code单元中的文本将被作为代码执行,执行代码时按Shift+Enter快捷键,即同时按下Shift和Enter键。
●Markdown:使用Markdown的格式化文本,可以通过简单的标记表示各种显示格式。
单元的样式可以通过工具栏中的下拉框或快捷键来选择。为了快速操作这些单元格,需要掌握一些快捷键,完整的快捷键列表可以通过菜单Help → Keyboard Shortcuts查看。
Notebook有两种编辑模式:命令模式和单元编辑模式。在命令模式中,被选中的单元格的边框为灰色。该模式用来对整个单元格进行操作,例如删除、添加、修改格式等。按Enter键进入单元编辑模式,边框的颜色变为绿色,并且上方菜单条的右侧会出现铅笔图标,表示目前处于编辑状态。按Esc键可返回命令模式。
3.安装MathJax
编写技术资料少不了输入数学公式,Notebook使用MathJax将输入的LaTeX文本转换成数学公式。由于MathJax库较大,没有集成到IPython中,而是直接从MathJax官网载入,因此如果计算机没有联网,就无法正确显示数学公式。为了解决这个问题,可以在单元中输入如下程序,它将会下载MathJax到本地硬盘:
from IPython.external.mathjax import install_mathjax, default_dest install_mathjax()
MathJax完整解压之后,约需100MB空间,其中大都是为旧版浏览器准备的PNG字体图像文件。执行下面的语句可以快速删除存放PNG字体图片的文件夹:
from os import path import shutil png_path = path.join(default_dest, "fonts/HTML-CSS/TeX/png") shutil.rmtree(png_path)
运行完上面的命令之后,在命令模式下按m键将单元样式切换到Markdown。然后输入如下LaTeX文本:
$e^{i\pi} + 1 = 0$
按Shift+Enter快捷键之后,其内容将被转换成数学公式显示:。
在本书提供的scipybook2下的settings目录下已经安装了MathJax,因此不必联网也可以看到数学公式。
4.操作运算进程
在代码单元中输入的代码都将在运算核进程的运行环境中执行。当执行某些代码出现问题时,可以通过Kernel菜单中的选项操作该进程:
●Interrupt:中断运行当前的程序,当程序进入死循环时可以通过它中断程序运行。
●Restart:当运算核进程在扩展模块的程序中进入死循环,无法通过Interrupt菜单中断时,可以通过此选项重新启动运算核进程。
一旦运算核进程被关闭,运行环境中的对象将不复存在,此时可以通过Cell → Run All菜单再次执行所有单元中的代码。代码将按照从上到下的顺序执行。由于用户在编写Notebook时,可以按照任意顺序执行单元,因此为了保证能再现运行环境中的所有对象,请记住调整单元的先后顺序。