如何在 Ubuntu 22.04 上为 Python 3 设置 Jupyter Notebook
介绍
Jupyter Notebook 为交互式计算提供了一个命令外壳作为 Web 应用程序。该工具可用于多种语言,包括 Python、Julia、R、Haskell 和 Ruby。它通常用于处理数据、统计建模和机器学习。
本教程将指导您设置 Jupyter Notebook 以在本地或从 Ubuntu 22.04 服务器运行,并教您如何连接和使用笔记本。 Jupyter notebooks(或简称笔记本)是由 Jupyter Notebook 应用程序生成的文档,其中包含计算机代码和丰富的文本元素(段落、方程式、图形、链接等),有助于呈现和共享可重复的研究。
在本指南结束时,您将能够使用在本地计算机或远程服务器上运行的 Jupyter Notebook 运行 Python 3 代码。
先决条件
要学习本教程,您需要一个 Python 3 编程环境和 Python venv
模块,或者
- 在你的本地机器上,或者
- 在 Ubuntu 服务器上。
本教程中的所有命令都应以非根用户身份运行。如果该命令需要 root 访问权限,则它前面会加上 sudo
。 Ubuntu 22.04 的初始服务器设置解释了如何添加用户并为他们提供 sudo 访问权限。
第 1 步 — 安装 Jupyter Notebook
在本节中,我们将使用 pip
安装 Jupyter Notebook。
激活要将 Jupyter Notebook 安装到的 Python 3 编程环境。在我们的示例中,我们会将其安装到 my_env
中,因此我们将确保我们位于该环境的目录中并像这样激活它:
- cd ~/environments
- . my_env/bin/activate
接下来,我们可以确保 pip
升级到最新版本:
- pip install --upgrade pip
现在我们可以使用以下命令安装 Jupyter Notebook:
- pip install jupyter
此时 Jupyter Notebook 已安装到当前编程环境中。
下一个可选步骤适用于使用 SSH 隧道连接 Web 界面的服务器安装的用户。
第 2 步(可选)— 使用 SSH 隧道连接到服务器安装
如果您在远程服务器上安装了 Jupyter Notebook,则需要使用 SSH 隧道连接到 Jupyter Notebook Web 界面。 Jupyter Notebook 在远程服务器上的特定端口(例如 :8888
、:8889
等)上运行其浏览器界面,默认情况下不会向更广泛的网络公开. SSH 隧道使您能够安全地连接到远程服务器端口,然后您可以使用本地 Web 浏览器访问这些端口。
请注意,这些说明旨在从本地终端窗口运行,即,不是您连接到服务器的终端窗口。
SSH 隧道
如果您使用的是 Windows,则需要安装一个版本的 OpenSSH 以便能够从终端进行 ssh
。如果您更喜欢在 PowerShell 中工作,则可以遵循 Git for Windows,它提供了一个包含 ssh
命令的本机 Windows bash 终端环境。其中每一个都得到了很好的支持,无论您决定使用哪个,都将归结为偏好。
如果您使用的是 Mac 或 Linux,则您的终端中已经可以使用 ssh
命令。
创建 SSH 隧道的步骤类似于如何使用 SSH 连接到 Droplets 指南,只是在 ssh
命令中添加了额外的参数。本小节将概述 ssh
命令中成功建立隧道所需的其他参数。
可以通过在新的本地终端窗口中运行以下 SSH 命令来完成 SSH 隧道:
- ssh -L 8888:localhost:8888 your_server_username@your_server_ip
ssh
命令打开 SSH 连接,但 -L
指定本地(客户端)主机上的给定端口将转发到远程主机上的给定主机和端口端(服务器)。这意味着在服务器上的第二个端口号(例如 8888
)上运行的任何内容都将出现在第一个端口号(例如 8888)上mark>
) 在您的本地计算机上。
如果收到8888
端口不可用的消息,可以将其更改为65535以下的任意端口号。端口8888没有任何意义但通常用于这样的演示。
server_username
是您在您创建的服务器上的用户名(例如 sammy),your_server_ip
是您服务器的 IP 地址。
例如,对于用户名 sammy
和服务器地址 your_server_ip
,命令将是:
- ssh -L 8888:localhost:8888 sammy@your_server_ip
如果在运行 ssh -L
命令后没有显示错误,您可以进入您的编程环境并运行 Jupyter Notebook:
- jupyter notebook
您将收到带有 URL 的输出。在本地计算机上的 Web 浏览器中,使用以 http://localhost:8888
开头的 URL 打开 Jupyter Notebook Web 界面。确保包含令牌号,或者在 http://localhost:8888
出现提示时输入令牌号字符串。
第 3 步 — 运行 Jupyter Notebook
安装 Jupyter Notebook 后,您可以在终端中运行它。为此,请执行以下命令:
- jupyter notebook
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).
...
如果您在本地计算机(而不是服务器)上运行 Jupyter Notebook,您的默认浏览器应该已经打开了 Jupyter Notebook Web 应用程序。如果没有,或者如果您关闭窗口,您可以导航到输出中提供的 URL,或导航到 localhost:8888
进行连接。
每当您想停止 Jupyter Notebook 进程时,请按 Ctrl+C
,在出现提示时键入 Y
,然后按 Enter
进行确认。
您将收到以下输出:
Output[C 12:32:23.792 NotebookApp] Shutdown confirmed
[I 12:32:23.794 NotebookApp] Shutting down kernels
Jupyter Notebook 现在不再运行。
第 4 步 — 使用 Jupyter Notebook
本节介绍使用 Jupyter Notebook 的基础知识。如果您当前没有运行 Jupyter Notebook,请使用 jupyter notebook
命令启动它。
您现在应该使用网络浏览器连接到它。 Jupyter Notebook 非常强大,有很多功能。本节将概述一些基本功能,以帮助您开始使用笔记本电脑。 Jupyter Notebook 将显示其运行目录中的所有文件和文件夹,因此当您处理项目时,请确保从项目目录启动它。
要创建新的笔记本文件,请从右上角的下拉菜单中选择新建 > Python 3:

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

您可以使用降价单元格来做笔记和记录您的代码。让我们实现这个简单的等式并打印结果。单击顶部单元格,然后按 Alt+Enter
在其下方添加一个单元格。在新单元格中输入以下代码。
x = 2
y = x**2
print(y)
要运行代码,请按 Ctrl+Enter
。您将收到以下结果:

您现在可以像在任何其他 Python 开发环境中一样导入模块和使用笔记本!
要关闭 Jupyter notebook 服务器端,请返回到启动它的终端窗口,然后按 Ctrl+C。这是结束终端进程的标准快捷方式,Jupyter 会在退出前提示您保存。
结论
恭喜!您现在应该能够使用 Jupyter Notebook 在 Markdown 中编写可重现的 Python 代码和注释。要从界面中快速浏览 Jupyter Notebook,请从顶部导航菜单中选择帮助 > 用户界面浏览以了解更多信息。
从这里开始,您可能有兴趣阅读我们关于时间序列可视化和预测的系列文章。