如何搭建Jupyter Notebook

2018-01-11 17:37:16 8174

一.Jupyter Notebook 简介

Jupyter Notebook 是一个开源的 Web 应用程序,可以用来创建和共享包含动态代码、方程式、可视化及解释性文本的文档。

 

其应用于包括:数据整理与转换,数值模拟,统计建模,机器学习等等。

 

更多信息请见 官网 。

二.安装配置

1.检查 Python 环境

CentOS 7.2 中默认集成了 Python 2.7,可以通过下面命令检查 Python 版本:

python –version

image.png

2.安装 pip

pip 是一个 Python 包管理工具,我们使用 yum 命令来安装该工具:

 

yum -y install python-pip

使用下面命令升级 pip 到最新版本:

 

pip install --upgrade pip

3.安装相关依赖

安装 Jupyter 过程中还需要其他一些依赖,我们使用以下命令安装他们:

 

yum -y groupinstall "Development Tools"

yum -y install python-devel

三.配置虚拟环境

1.安装 virtualenv

我们将为 Jupyter 创建一个独立的虚拟环境,与系统自带的 Python 隔离开来。为此,先安装 virtualenv 库:

 

pip install virtualenv

2.创建虚拟环境

创建一个专门的虚拟环境,并直接激活进入该环境:

 

virtualenv venv

source venv/bin/activate

3.使用 pip 安装 Jupyter

我们使用 pip 命令安装 Jupyter:

 

pip install jupyter

四.配置 Jupyter Notebook

 

1.建立项目目录

我们先为 Jupyter 相关文件准备一个目录:

 

mkdir /data/jupyter

cd /data/jupyter

再建立一个目录作为 Jupyter 运行的根目录:

 

mkdir /data/jupyter/root

2.准备密码密文

由于我们将以需要密码验证的模式启动 Jupyter,所以我们要预先生成所需的密码对应的密文。

生成密文

使用下面的命令,创建一个密文的密码:

python -c "import IPython;print IPython.lib.passwd()"

执行后需要输入并确认密码,然后程序会返回一个 'sha1:...' 的密文,我们接下来将会用到它。

3.修改配置

生成配置文件

我们使用 --generate-config 来参数生成默认配置文件:

jupyter notebook --generate-config --allow-root

生成的配置文件在 /root/.jupyter/ 目录下

image.png

修改配置

然后在配置文件最下方加入以下配置:

c.NotebookApp.ip = '*'

c.NotebookApp.allow_root = True

c.NotebookApp.open_browser = False

c.NotebookApp.port = 8888

c.NotebookApp.password = u'刚才生成的密文(sha:...)'

c.ContentsManager.root_dir = '/data/jupyter/root'

其中:

c.NotebookApp.password 请将上一步中密文填入此项,包括 sha: 部分。

启动 Jupyter Notebook

4.直接启动

使用以下指令启动 Jupyter Notebook:

jupyter notebook

此时,访问 http://www.landui.com:8888 即可进入 Jupyter 首页。

 

四.创建 Notebook

1.进入【首页】首先需要输入前面步骤中设置的密码。

然后点击右侧的【 new 】,选择 Python2 新建一个 notebook,这时跳转至编辑界面。

现在我们可以看到 /data/jupyter/root/ 目录中出现了一个 Untitled.ipynb 文件,这就是我们刚刚新建的 Notebook 文件。我们建立的所有 Notebook 都将默认以该类型的文件格式保存。

image.png

后台运行

直接以 jupyter notebook 命令启动 Jupyter 的方式在连接断开时将会中断,所以我们需要让 Jupyter 服务在后台常驻。

nohup jupyter notebook > /data/jupyter/jupyter.log 2>&1 &

该命令将使得 Jupyter 在后台运行,并将日志写在 /data/jupyter/jupyter.log 文件中。

准备后续步骤的 Notebook

为了后面实验中实验室的步骤检查器能够更好的工作,此时我们使用以下命令预先创建几份 ipynb 文件:

cd /data/jupyter/root

cp Untitled.ipynb first.ipynb

cp Untitled.ipynb matplotlib.ipynb

cp Untitled.ipynb tensorflow.ipynb

rm -f Untitled.ipynb

使用 Jupyter Notebook

接下来的步骤中如遇到步骤检查未通过,请按下 Ctrl + S 保存,等待步骤检查器确认。

编辑界面

点击这里打开 first.ipynb 编辑界面。

Jupyter Notebook 的编辑界面主要由 工具栏 和 内容编辑区 构成。

下方编辑区,由 Cell 组成。每个 notebook 由多个 Cell 构成,每个 Cell 都可以有不同的用途。

Code Cell

新建的 notebook 中包含一个代码 Cell(Code Cell),以 [ ] 开头,在该类型的 Cell 中,可以输入任意代码并执行。如输入:

 

1 + 1

然后按下 Shift + Enter 键, Cell 中代码就会被执行,光标也会移动至下个新 Cell 中。我们接着输入:

print('Hello Jupyter')

再次按下 Shift + Enter ,可以看到这次没有出现 Out[..] 这样的文字。这是因为我们只打印出来了某些值,而没有返回任何的值。

按下 Ctrl + S 保存,等待步骤检查器确认。

Heading Cell *

新版本中已经没有独立的 Heading Cell,现在标题被整合在 Markdown Cell 之中。

如果我们想在顶部添加一个的标题。选中第一个 Cell,然后点击 Insert -> Insert Cell Above。

你会发现,文档顶部马上就出现了一个新的 Cell。点击在工具栏中 Cell 类型(默认为 Code),将其变成 Markdown。接着在 Cell 中写下:

# My First Notebook

然后按下 Shift + Enter 键,便可以看到生成了一行一级标题。

与 Markdown 语法相同,使用多个#将改变标题级别。

Markdown Cell

上一步中我们已经尝试了使用了 Markdown Cell。在该 Cell 中,除标题外其他语法同样支持。比如,我们在一个新的 Cell 中插入以下文本:

This is a **table**:

| Name | Value |

|:----:|:-----:|

|    A |     1 |

|    B |     2 |

|    C |     3 |

然后按下 Shift + Enter,即可渲染出相应内容。

高级用法 - HTML

Markdown Cell 中同样接受 HTML 代码。这样,你就可以实现更加丰富的样式及结构、添加图片等等。

例如,如果想在 notebook 中添加 Jupyter 的 logo,并且添加 2px 的黑色边框,放置在单元格左侧,可以这样编写:

<img src="http://www.landui.com/assets/nav_logo.svg" style="border: 2px solid black; float:left" />

然后按下 Shift + Enter,即可渲染出图片。

高级用法 - LaTex

Markdown Cell 还支持 LaTex 语法。在 Cell 中插入以下文本:

 

$$int_0^{+infty} x^2 dx$$

同样按下 Shift + Enter,即可渲染出公式。

导出

notebook 支持导出导出为 HTML、Markdown、PDF 等多种格式。

如点击 File -> Download as -> HTML(.html),即可下载到 HTML 版本的 notebook。

导出 PDF

其中,导出 PDF 需要其他包的支持,我们需要使用以下命令安装这些依赖:

yum -y install pandoc texlive-*

注:直接导出 PDF 时 Jupyter 可能会忽略一些 Cell,建议先导出为 HTML,然后使用浏览器将其转为 PDF。

 [摘自网络]

提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: