如何设置 Jupyter Notebook 以在 Ubuntu 16.04 上运行 IPython
介绍
IPython 是 Python 的交互式命令行界面。 Jupyter Notebook 为包括 IPython 在内的多种语言提供交互式 Web 界面。
本文将引导您设置服务器以运行 Jupyter Notebook,并教您如何连接和使用笔记本。 Jupyter 笔记本(或简称笔记本)是由 Jupyter Notebook 应用程序生成的文档,其中包含计算机代码(例如 Python)和富文本元素(段落、方程式、图形、链接等),有助于呈现可重复的研究。
在本指南结束时,您将能够使用在远程服务器上运行的 Ipython 和 Jupyter Notebook 运行 Python 2.7 代码。出于本教程的目的,使用 Python 2 (2.7.x),因为许多数据科学、科学计算和高性能计算库支持 2.7 而不是 3.0+。
先决条件
要学习本教程,您需要具备以下条件:
- Ubuntu 16.04 Droplet
- 具有 sudo 权限的非根用户(Ubuntu 16.04 的初始服务器设置说明了如何进行设置。)
本教程中的所有命令都应以非根用户身份运行。如果该命令需要 root 访问权限,则它前面会加上 sudo
。使用 Ubuntu 16.04 进行初始服务器设置说明了如何添加用户并为他们提供 sudo 访问权限。
第 1 步 — 安装 Python 2.7 和 Pip
在本节中,我们将安装 Python 2.7 和 Pip。
首先,更新系统的包索引。这将确保旧的或过时的软件包不会干扰安装。
- sudo apt-get update
接下来,安装 Python 2.7、Python Pip 和 Python Development:
- sudo apt-get -y install python2.7 python-pip python-dev
安装 python2.7
将更新到最新版本的 Python 2.7,python-pip
将安装 Pip,它允许我们管理我们想要使用的 Python 包。 Jupyter 的一些依赖项可能需要编译,在这种情况下,您需要能够编译 Python C 扩展,因此我们也安装了 python-dev
。
要验证您是否安装了 python:
- python --version
这将输出:
OutputPython 2.7.11+
根据最新版本的 Python 2.7,输出可能会有所不同。
您还可以使用以下命令检查是否安装了 pip:
- pip --version
您应该类似于以下内容:
Outputpip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
同样,根据您的 pip 版本,输出可能会略有不同。
第 2 步 — 安装 Ipython 和 Jupyter Notebook
在本节中,我们将安装 Ipython 和 Jupyter Notebook。
首先,安装 Ipython:
- sudo apt-get -y install ipython ipython-notebook
现在我们可以继续安装 Jupyter Notebook:
- sudo -H pip install jupyter
根据 Ubuntu apt-get 存储库中的 pip 版本,您在尝试安装 Jupyter 时可能会遇到以下错误:
OutputYou are using pip version 8.1.1, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
如果是这样,您可以使用 pip 将 pip 升级到最新版本:
- sudo -H pip install --upgrade pip
升级 pip,然后再次尝试安装 Jupyter:
- sudo -H pip install jupyter
第 3 步 — 运行 Jupyter Notebook
您现在拥有运行 Jupyter Notebook 所需的一切!要运行它,请执行以下命令:
- jupyter notebook
如果您在安装了 JavaScript 的系统上运行 Jupyter,它仍会运行,但它可能会给您一个错误,指出 Jupyter Notebook 需要 JavaScript:
OutputJupyter Notebook requires JavaScript.
Please enable it to proceed.
...
要忽略错误,您可以按 Q
然后按 Y
确认。
Jupyter Notebook 的活动日志将打印到终端。当您运行 Jupyter Notebook 时,它会在特定端口号上运行。您运行的第一个笔记本通常在端口 8888
上运行。要检查运行 Jupyter Notebook 的特定端口号,请参阅用于启动它的命令的输出:
Output[I NotebookApp] Serving notebooks from local directory: /home/sammy
[I NotebookApp] 0 active kernels
[I NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/
[I NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
如果您在本地 Linux 计算机(而不是 Droplet)上运行 Jupyter Notebook,您只需导航到 localhost:8888
即可连接到 Jupyter Notebook。如果您在 Droplet 上运行 Jupyter Notebook,则需要使用 SSH 隧道连接到服务器,如下一节所述。
此时,您可以保持 SSH 连接打开并保持 Jupyter Notebook 运行,或者可以退出应用程序并在设置 SSH 隧道后重新运行它。让我们保持简单并停止 Jupyter Notebook 进程。一旦 SSH 隧道正常工作,我们将再次运行它。要停止 Jupyter Notebook 进程,请按 CTRL+C
,键入 Y
,然后按 ENTER
确认。将显示以下内容:
Output[C 12:32:23.792 NotebookApp] Shutdown confirmed
[I 12:32:23.794 NotebookApp] Shutting down kernels
第 4 步 — 使用 SSH 隧道连接到服务器
在本节中,我们将学习如何使用 SSH 隧道连接到 Jupyter Notebook Web 界面。由于 Jupyter Notebook 在 Droplet 的特定端口上运行(例如 :8888
、:8889
等),SSH 隧道使您能够安全地连接到 Droplet 的端口。
接下来的两个小节描述了如何从 1) Mac 或 Linux 和 2) Windows 创建 SSH 隧道。请参阅您本地计算机的小节。
使用 Mac 或 Linux 的 SSH 隧道
如果您使用的是 Mac 或 Linux,创建 SSH 隧道的步骤类似于如何使用 SSH 密钥与 DigitalOcean Droplets 使用 Linux 或 Mac 指南,除了在 ssh
命令中添加了其他参数.本小节将概述 ssh
命令中成功建立隧道所需的其他参数。
可以通过运行以下 SSH 命令来完成 SSH 隧道:
- ssh -L 8000:localhost:8888 your_server_username@your_server_ip
ssh
命令打开 SSH 连接,但 -L
指定本地(客户端)主机上的给定端口将转发到远程主机上的给定主机和端口侧(液滴)。这意味着在 Droplet 的第二个端口号(即 8888
)上运行的任何内容都将出现在第一个端口号(即 8000) mark>
) 在您的本地计算机上。您应该将 8888
更改为运行 Jupyter Notebook 的端口。 (可选)将端口 8000
更改为您选择的端口之一(例如,如果 8000
被另一个进程使用)。使用大于或等于 8000
的端口(即 8001
、8002
等.) 以避免使用已被另一个进程使用的端口。 server_username
是您在您创建的 Droplet 上的用户名(即 sammy),your_server_ip
是您的 IP 地址水滴。例如,对于用户名 sammy
和服务器地址 111.111.111.111
,命令将是:
- ssh -L 8000:localhost:8888 sammy@111.111.111.111
如果在运行 ssh -L
命令后没有出现错误,您可以运行 Jupyter Notebook:
- jupyter notebook
现在,从本地计算机上的 Web 浏览器,使用 http://localhost:8000
(或您选择的任何端口号)打开 Jupyter Notebook Web 界面。
使用 Windows 和 Putty 的 SSH 隧道
如果您使用的是 Windows,您还可以使用 Putty 轻松创建 SSH 隧道,如如何在 DigitalOcean Droplets 上使用 SSH 密钥和 PuTTY(Windows 用户)中所述。
首先,输入服务器 URL 或 IP 地址作为主机名,如下所示:

接下来,单击左窗格底部的 SSH 以展开菜单,然后单击隧道。输入用于访问本地计算机上的 Jupyter 的本地端口号。选择8000
或更大(即8001
, 8002
> 等)以避免其他服务使用的端口,并将目标设置为 localhost:8888
其中 :8888
是运行 Jupyter Notebook 的端口号。现在点击添加按钮,端口应该出现在转发端口列表中:

最后,单击“打开”按钮通过 SSH 连接到服务器并通过隧道连接所需的端口。在 Web 浏览器中导航到 http://localhost:8000
(或您选择的任何端口)以连接到在服务器上运行的 Jupyter Notebook。
第 5 步 — 使用 Jupyter Notebook
本节介绍使用 Jupyter Notebook 的基础知识。至此,您应该已经运行了 Jupyter Notebook,并且您应该使用 Web 浏览器连接到它。 Jupyter Notebook 非常强大,有很多功能。本节将概述一些基本功能,以帮助您开始使用笔记本电脑。 Jupyter Notebook 会自动显示其运行目录中的所有文件和文件夹。
要创建新的笔记本文件,请从右上角的下拉菜单中选择新建 > Python 2:

这将打开一个笔记本。我们现在可以在单元格中运行 Python 代码或将单元格更改为降价。例如,通过单击顶部导航栏中的“单元格”>“单元格类型”>“Markdown”,将第一个单元格更改为接受 Markdown。我们现在可以使用 Markdown 编写笔记,甚至可以将用 LaTeX 编写的方程放在 $$
符号之间。例如,在将其更改为 markdown 后,在单元格中键入以下内容:
# Simple Equation
Let us now implement the following equation:
$$ y = x^2$$
where $x = 2$
要将 markdown 转换为富文本,请按 CTRL+ENTER
,结果应如下所示:

您可以使用降价单元格来做笔记和记录您的代码。让我们实现这个简单的等式并打印结果。选择 Insert > Insert Cell Below 以插入单元格并输入以下代码:
x = 2
y = x*x
print y
要运行代码,请按 CTRL+ENTER
。以下应该是结果:

您现在可以像在任何其他 Python 开发环境中一样包含库和使用笔记本!
结论
恭喜!您现在应该能够使用在 Droplet 上运行的 Jupyter notebook 使用 markdown 编写可重现的 Python 代码和注释。要快速浏览 Jupyter 笔记本,请从顶部导航菜单中选择帮助 > 用户界面浏览。