介绍
Jupyter Notebook 是一个开源的交互式 Web 应用程序,允许用户使用 40 多种编程语言编写和运行计算机代码,包括:Python、R、Julia 和 Scala。
来自 Project Jupyter 的产品 — Jupyter Notebook 对于迭代编码非常有用,因为它允许您只编写一小段代码就运行它并返回结果。
Jupyter Notebook 提供了创建笔记本文档的功能,简称为 “笔记本”。从 Jupyter 笔记本创建的笔记是可共享的,是可重复的研究文档,其中包括丰富的文本元素、方程式、代码及其输出(图形,表格,交互式图)。笔记本还可以导出为原始代码文件,HTML 或 PDF 文档,或用于创建交互式幻灯片或网页。
本文将向您介绍如何在 Ubuntu 18.04 Web 服务器上安装和配置 Jupyter Notebook 应用程序,以及如何从本地计算机连接到它。
此外,我们还将讨论如何使用 Jupyter Notebook 来运行 Python 代码。
先决条件
要完成本教程,您需要:
- 一个 Ubuntu 18.04 服务器实例。此服务器必须具有 sudo 权限且配置了防火墙的非 root 用户。按照我们的初始服务器设置指南进行设置。
- Python 3,pip 和 venv 服务器上安装的 Python 模块。。
- 在您的本地计算机上运行的现代 Web 浏览器,您将使用它访问 Jupyter Notebook。
此外,如果您的本地计算机运行的是 Windows 系统,则需要安装 PuTTY 才能建立到服务器的 SSH 隧道。
第 1 步 – 安装 Jupyter Notebook
笔记本会用于编写、运行和查看小代码片段,因此需要设置编程语言支持。
Jupyter Notebook 使用特定语言的内核 — 一个运行和内省代码的计算机程序。Jupyter Notebook 有许多不同语言的内核,默认为 IPython。在本教程中,您将通过设置 Jupyter Notebook ,来通过 IPython 内核运行 Python 代码。
此时您应该安装了 Python 3、pip 和虚拟环境。将虚拟环境命名为 “ my_env”,但我们可以随意更改它。
首先激活虚拟环境:
1 2 |
source my_env/bin/activate |
在此之后,您的提示将以您的环境名称为前缀。
现在您已进入虚拟环境,请继续安装 Jupyter Notebook:
1 2 |
python3 -m pip install jupyter |
如果安装成功,您将看到类似于以下内容的输出:
1 2 3 4 |
Output . . . Successfully installed MarkupSafe-1.0 Send2Trash-1.5.0 backcall-0.1.0 bleach-2.1.3 decorator-4.3.0 entrypoints-0.2.3 html5lib-1.0.1 ipykernel-4.8.2 ipython-6.4.0 ipython-genutils-0.2.0 ipywidgets-7.2.1 jedi-0.12.0 jinja2-2.10 jsonschema-2.6.0 jupyter-1.0.0 jupyter-client-5.2.3 jupyter-console-5.2.0 jupyter-core-4.4.0 mistune-0.8.3 nbconvert-5.3.1 nbformat-4.4.0 notebook-5.5.0 pandocfilters-1.4.2 parso-0.2.0 pexpect-4.5.0 pickleshare-0.7.4 prompt-toolkit-1.0.15 ptyprocess-0.5.2 pygments-2.2.0 python-dateutil-2.7.3 pyzmq-17.0.0 qtconsole-4.3.1 simplegeneric-0.8.1 six-1.11.0 terminado-0.8.1 testpath-0.3.1 tornado-5.0.2 |
此时,Jupyter Notebook 已安装到您的服务器上。接下来,我们将介绍如何运行该应用程序。
第 2 步 – 运行 Jupyter 笔记本
必须从 VPS 运行 Jupyter Notebook,以便我们可以使用 SSH 隧道和 Web 浏览器从本地计算机连接到它。
要运行 Jupyter Notebook 服务器,需要输入以下命令:
1 2 |
jupyter notebook |
运行此命令后,您将看到类似于以下内容的输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Output [I 19:46:22.031 NotebookApp] Writing notebook server cookie secret to /home/sammy/.local/share/jupyter/runtime/notebook_cookie_secret [I 19:46:22.365 NotebookApp] Serving notebooks from local directory: /home/sammy/environments [I 19:46:22.365 NotebookApp] 0 active kernels [I 19:46:22.366 NotebookApp] The Jupyter Notebook is running at: [I 19:46:22.366 NotebookApp] http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675 [I 19:46:22.366 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 19:46:22.366 NotebookApp] No web browser found: could not locate runnable browser. [C 19:46:22.367 NotebookApp] Copy/paste this URL into your browser when you connect for the first time, to login with a token: http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675&tokenExample_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675 |
您可能会在输出中注意到存在 No web browser found
警告,这是可以预料到的,因为应用程序在服务器上运行,您可能还没有安装 Web 浏览器。
退出 Jupyter 笔记本后,按 CTRL+C 之后 点击 y,接着点击 ENTER 确认:
1 2 3 4 5 |
Output Shutdown this notebook server (y/[n])? y [C 20:05:47.654 NotebookApp] Shutdown confirmed [I 20:05:47.654 NotebookApp] Shutting down 0 kernels |
使用 exit 命令注销服务器:
1 2 |
exit |
此时您已经在服务器上成功运行 Jupyter Notebook 了。但是,为了访问应用程序并开始使用笔记本,您需要使用 SSH 隧道和本地计算机上的 Web 浏览器连接到应用程序。
第 3 步 – 使用 SSH 隧道连接到 Jupyter Notebook 应用程序
SSH 隧道是连接到服务器上运行的 Jupyter Notebook 应用程序的一种简单而快速的方法。安全 shell(通常称为 SSH)是一种网络协议,您可以通过不安全的网络安全地连接到远程服务器。
SSH 协议包括端口转发机制,允许您在服务器的特定端口上运行的某些应用程序,通过隧道传输到本地计算机上的特定端口。
之后我们将学习如何安全地 “转发” 在服务器上运行的 Jupyter Notebook 应用程序(8888 默认情况下在端口上)到本地计算机上的端口。
接下来将针对不同的系统展示建立 SSH 隧道的方法。
注意:可以使用 DigitalOcean Web 控制台设置和安装 Jupyter Notebook,但必须通过终端或 PuTTY 通过 SSH 隧道连接到应用程序。
使用 macOS 或 Linux 建立 SSH 隧道
如果您的本地计算机运行 Linux 或 macOS 系统,只需运行单个命令即可建立 SSH 隧道。
1 2 |
ssh |
这是打开 SSH 连接的标准命令,但是当与 -L
指令一起使用时,可以将指定本地主机(即本地计算机)上的给定端口转发到远程主机上的给定主机和端口。这意味着在远程服务器上指定端口上运行的任何内容(8888:Jupyter Notebook 的默认端口)都将出现在本地计算机上的指定端口上(8000 在示例命令中)。
要建立自己的 SSH 隧道,请运行以下命令:
1 2 |
8000 |
如果 8000 另一个进程正在使用,请随意将端口更改为您选择的端口。建议您使用大于或等于 8000 的端口,因为这些端口号不太可能被其他进程使用。确保包含您自己的服务器的 IP 地址和服务器的非 root 用户的名称:
1 2 |
ssh -L 8000:localhost:8888 sammy@your_server_ip |
如果此命令没有错误,它将使您登录到远程服务器并激活虚拟环境:
1 2 |
source ~/environments/my_env/bin/activate |
然后运行 Jupyter Notebook 应用程序:
1 2 |
jupyter notebook |
要连接到 Jupyter Notebook,请使用 Web 浏览器导航到本地主机上的本地端口:http://localhost:8000
现在您已连接到 Jupyter Notebook。
使用 Windows 和 PuTTY 建立 SSH 隧道
PuTTY 是 Windows 的开源 SSH 客户端,可用于连接到您的服务器。在 Windows 计算机上下载并安装 PuTTY 后,打开程序并输入服务器 URL 或 IP 地址,如下所示:
接下来,单击左窗格底部的 + SSH
,然后单击隧道。在此窗口中,输入要用于在本地计算机上访问 Jupyter 的端口(8000)。建议使用大于或等于 8000 的端口,因为这些端口号不太可能被其他进程使用。但是,如果已经由其他进程使用,需要重新选择其他未使用的端口号。
接下来,将目标设置为 localhost:8888,因为端口 8888 是运行 Jupyter Notebook 的端口。然后单击 “ 添加” 按钮,端口应出现在“ 转发端口”字段中:
最后,单击“ 打开”按钮,通过 SSH 将您的机器连接到服务器并打开隧道传输所需的端口。如果没有出现错误,请继续并激活您的虚拟环境:
1 2 |
source ~/environments/my_env/bin/activate |
然后运行 Jupyter Notebook:
1 2 |
jupyter notebook |
接下来,导航到 Web 浏览器中的本地端口,来连接到服务器上运行的 Jupyter Notebook 实例。
现在您已连接到 Jupyter Notebook。
第4步 – 使用 Jupyter Notebook
当通过 Web 浏览器访问时,Jupyter Notebook 提供了一个 Notebook Dashboard,它充当文件浏览器,提供了创建、编辑和浏览笔记本的界面。
浏览器将这些笔记本视为文档(以 .ipynb 文件扩展名保存),您可以使用任意数量的单元格填充这些文档。每个单元格都包含一个交互式文本编辑器,可用于运行代码或编写渲染文本。
此外,您可以编写和运行方程,包括其他富媒体,如图像或互动情节,它们可以以各种格式导出和共享(.ipyb,.pdf,.py)。
为了说明其中的一些功能,我们将从 Notebook Dashboard 创建一个笔记本文件,编写一个带有等式的简单文本板,并运行一些基本的 Python 3 代码。
此时,您应该使用 SSH 隧道连接到服务器,并从服务器启动 Jupyter Notebook 应用程序。您将看到一个登录页面:
在顶部的密码或令牌字段中,输入 Jupyter Notebook
从服务器运行后输出中显示的令牌:
1 2 3 4 5 6 7 8 9 10 11 |
Output [I 20:35:17.004 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret [I 20:35:17.314 NotebookApp] Serving notebooks from local directory: /home/sammy [I 20:35:17.314 NotebookApp] 0 active kernels [I 20:35:17.315 NotebookApp] The Jupyter Notebook is running at: [I 20:35:17.315 NotebookApp] http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675 [I 20:35:17.315 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 20:35:17.315 NotebookApp] No web browser found: could not locate runnable browser. [C 20:35:17.316 NotebookApp] . . . |
或者,您可以从终端输出中复制该 URL 并将其粘贴到浏览器的地址栏中,Jupyter 笔记本将自动地显示存储在目录中的所有文件和文件夹。
单击 Notebook Dashboard 右上角的 New,然后单击 Python 3,创建一个新的笔记本文件:
在新笔记本中,通过单击顶部导航栏上的 “ 单元格” -> “ 单元格类型” – >“ Markdown”,将第一个单元格更改为接受 Markdown 语法。此单元格类型还允许您在 LaTeX 中编写方程式。例如,在将其更改为 Markdown 后,在单元格中键入以下内容:
1 2 3 4 5 6 7 |
# Simple Equation Let us now implement the following equation in Python: $$ y = x^2$$ where $x = 2$ |
要将降价转换为富文本格式,请按 CTRL + ENTER ,会出现以下结果:
您可以使用降价单元格做笔记并记录您的代码。
现在,让我们实现一个简单的等式并打印结果。单击插入, 在下面插入单元格。在此新单元格中,输入以下代码:
1 2 3 4 |
x = 2 y = x*x print(y) |
点击 CTRL + ENTER 运行该代码,结果如下:
这些是使用 Jupyter Notebook 可以做些什么的一些相对简单的例子。但是,Jupyter Notebook 是一个非常强大的应用程序,具有许多潜在的用例。您可以添加一些 Python 库并像使用其他 Python 开发环境一样使用它。
结论
您已经能够使用在远程服务器上运行的 Jupyter Notebook 来编写可重现的 Python 代码和文本。
要快速浏览 Jupyter Notebook,请单击顶部导航栏中的 “ 帮助”,然后选择 “ 用户界面游览”,如下所示:
如果您有兴趣,我们建议您通过 Project Jupyter 文档了解有关 Jupyter Notebook 的更多信息。此外,您可以通过学习如何在 Python 3 中编写代码来构建您在本教程中学到的内容。
本文作者:倪开