如何在 Ubuntu 16.04 上设置 Jupyter Notebook 来运行 IPython
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
简介
IPython 是 Python 的交互式命令行界面。Jupyter Notebook 提供了一个交互式的 Web 界面,可以运行多种语言,包括 IPython。
本文将指导您设置一个服务器来运行 Jupyter Notebook,并教您如何连接和使用笔记本。Jupyter 笔记本(或简称笔记本)是由 Jupyter Notebook 应用程序生成的文档,其中包含计算机代码(例如 Python)和丰富的文本元素(段落、方程式、图表、链接等),有助于展示可重现的研究。
通过本指南,您将能够在远程服务器上运行 Python 2.7 代码,使用 IPython 和 Jupyter Notebook。出于本教程的目的,使用 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 开发工具:
sudo apt-get -y install python2.7 python-pip python-dev
安装 python2.7
将更新到最新版本的 Python 2.7,而 python-pip
将安装 Pip,使我们能够管理想要使用的 Python 软件包。Jupyter 的一些依赖项可能需要编译,因此我们也安装了 python-dev
。
要验证是否已安装 Python,请运行以下命令:
python --version
这将输出:
Python 2.7.11+
根据 Python 2.7 的最新版本,输出可能会有所不同。
您还可以使用以下命令检查是否已安装 Pip:
pip --version
您应该会看到类似以下内容:
pip 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 时,您可能会收到以下错误:
You 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:
Jupyter Notebook requires JavaScript.
Please enable it to proceed.
...
要忽略此错误,您可以按 Q
,然后按 Y
确认。
Jupyter Notebook 的活动日志将打印到终端。运行 Jupyter Notebook 时,它会运行在特定的端口号上。您通常会在端口 8888
上运行第一个笔记本。要检查 Jupyter Notebook 正在运行的具体端口号,请参考用于启动它的命令的输出:
[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 计算机上运行 Jupyter Notebook(而不是在 Droplet 上),您可以简单地导航到 localhost:8888
来连接到 Jupyter Notebook。如果您在 Droplet 上运行 Jupyter Notebook,则需要使用 SSH 隧道连接到服务器,如下一节所述。
此时,您可以保持 SSH 连接打开并保持 Jupyter Notebook 运行,也可以退出应用程序,一旦设置了 SSH 隧道,就可以重新运行它。让我们简单点,停止 Jupyter Notebook 进程。要停止 Jupyter Notebook 进程,请按 CTRL+C
,输入 Y
,然后按 ENTER
确认。将显示以下内容:
[C 12:32:23.792 NotebookApp] Shutdown confirmed
[I 12:32:23.794 NotebookApp] Shutting down kernels
第四步 — 使用 SSH 隧道连接服务器
在本节中,我们将学习如何使用 SSH 隧道连接到 Jupyter Notebook 的 Web 接口。由于 Jupyter Notebook 在 Droplet 上运行在特定端口上(如 :8888
、:8889
等),SSH 隧道使您能够安全地连接到 Droplet 的端口。
接下来的两个小节将介绍如何从 1)Mac 或 Linux 和 2)Windows 创建 SSH 隧道。请参考适用于您本地计算机的小节。
在 Mac 或 Linux 上使用 SSH 隧道
如果您使用的是 Mac 或 Linux,创建 SSH 隧道的步骤类似于使用 Linux 或 Mac 指南中的数字海洋 Droplets 使用 SSH 密钥,只是在 ssh
命令中添加了额外的参数。本小节将概述在 ssh
命令中需要的额外参数以成功建立隧道。
可以通过运行以下 SSH 命令来进行 SSH 隧道:
ssh -L 8000:localhost:8888 your_server_username@your_server_ip
ssh
命令打开了一个 SSH 连接,但 -L
指定了要将本地(客户端)主机上的给定端口转发到远程端(Droplet)上的给定主机和端口。这意味着在 Droplet 上运行在第二个端口号(即 8888
)上的内容将显示在本地计算机上的第一个端口号(即 8000
)上。您应该将 8888
更改为 Jupyter Notebook 运行的端口。可选择将端口 8000
更改为您选择的端口(例如,如果 8000
被另一个进程使用)。使用大于或等于 8000
的端口(即 8001
、8002
等)以避免使用已被其他进程使用的端口。server_username
是您在 Droplet 上创建的用户名(例如 sammy),your_server_ip
是您的 Droplet 的 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 上使用 SSH 隧道和 Putty
如果您使用的是 Windows,您也可以使用 Putty 轻松创建 SSH 隧道,如《如何在数字海洋 Droplets 上使用 PuTTY 使用 SSH 密钥(Windows 用户)》中所述。
首先,将服务器 URL 或 IP 地址输入为主机名,如下所示:
!设置 SSH 隧道的主机名
接下来,点击左侧窗格底部的 SSH 以展开菜单,然后点击 Tunnels。输入要用于在本地计算机上访问 Jupyter 的本地端口号。选择 8000
或更大的值(例如 8001
、8002
等)以避免被其他服务使用的端口,并将目的地设置为 localhost:8888
,其中 :8888
是 Jupyter Notebook 运行的端口号。现在点击 Add 按钮,端口应该出现在 Forwarded ports 列表中:
!转发端口列表
最后,点击 Open 按钮以通过 SSH 连接到服务器并隧道所需的端口。在 Web 浏览器中导航至 http://localhost:8000
(或您选择的端口)以连接到运行在服务器上的 Jupyter Notebook。
第五步 — 使用 Jupyter Notebook
本节将介绍使用 Jupyter Notebook 的基础知识。到目前为止,您应该已经运行了 Jupyter Notebook,并且应该使用 Web 浏览器连接到它。Jupyter Notebook 非常强大,并且具有许多功能。本节将概述一些基本功能,以帮助您开始使用笔记本。Jupyter Notebook 会自动显示其所在目录中的所有文件和文件夹。
要创建一个新的笔记本文件,请从右上角的下拉菜单中选择 New > Python 2:
!创建一个新的 Python 2 笔记本
这将打开一个笔记本。现在我们可以在单元格中运行 Python 代码,或者将单元格更改为 Markdown。例如,通过点击顶部导航栏中的 Cell > Cell Type > Markdown,将第一个单元格更改为接受 Markdown。现在,我们可以使用 Markdown 写笔记,甚至可以在 $$
符号之间放置 LaTeX 编写的方程来包含 LaTeX 中的方程。例如,在将其更改为 markdown 后,将以下内容键入到单元格中:
# 简单方程
现在让我们实现以下方程:
$$ y = x^2$$
其中 $x = 2$
要将 markdown 转换为富文本,请按 CTRL+ENTER
,结果应该如下所示:
!markdown 结果
您可以使用 markdown 单元格来记录代码并记录您的代码。 让我们实现这个简单的方程并打印结果。 选择 插入 > 在下方插入单元格 来插入一个单元格,并输入以下代码:
x = 2
y = x*x
print y
要运行代码,请按 CTRL+ENTER
。结果应该如下所示:
!简单方程结果
现在,您可以包含库并像在任何其他 Python 开发环境中一样使用笔记本!
结论
恭喜!您现在应该能够使用 Jupyter 笔记本在 Droplet 上运行并使用 markdown 编写可重现的 Python 代码和笔记。 要快速了解 Jupyter 笔记本,请从顶部导航菜单中选择 帮助 > 用户界面导览。