如何在 Ubuntu 20.04 上使用 Python 3 设置 Jupyter Notebook 并通过 SSH 隧道连接

介绍

Jupyter Notebook是一个开源 Web 应用程序,可让您创建和共享交互式代码、可视化等。该工具可用于多种编程语言,包括 Python、Julia、R、Haskell 和 Ruby。它通常用于处理数据、统计建模和机器学习。

Jupyter Notebooks(或简称“Notebooks”)是由 Jupyter Notebook 应用程序生成的文档,其中包含计算机代码和富文本元素(段落、方程、数字、链接等),有助于呈现和共享可重复的研究。因此,它们可以成为用于数据驱动或基于编程的演示或作为教学工具的绝佳工具。

本教程将引导您设置 Jupyter Notebook 以从 Ubuntu 20.04 服务器运行,并演示如何通过隧道从本地计算机连接和使用 Notebook。在本指南结束时,您将能够使用在远程服务器上运行的 Jupyter Notebook 运行 Python 3 代码。

先决条件

为了完成本指南,您应该拥有一个带有基本防火墙的全新 Ubuntu 20.04 服务器实例和一个配置了 sudo 权限的非 root 用户。您可以通过运行我们的初始服务器设置教程来了解如何进行设置

第 1 步 – 设置 Python

首先,我们将从 Ubuntu 存储库安装 Python 编程环境所需的依赖项。Ubuntu 20.04 预装了 Python 3。稍后我们将使用 Python 包管理器 pip 安装其他组件。

我们首先需要更新本地apt包索引,然后下载并安装包:

  • sudo apt update

接下来,安装 pip 和 Python 头文件,这些文件被 Jupyter 的一些依赖项使用:

  • sudo apt install python3-pip python3-dev

我们现在可以继续设置一个 Python 虚拟环境,我们将在其中安装 Jupyter。

第 2 步 – 为 Jupyter 创建 Python 虚拟环境

现在我们已经准备好了 Python 3、它的头文件和 pip,我们可以创建一个 Python 虚拟环境来管理我们的项目。我们将把 Jupyter 安装到这个虚拟环境中。

为此,我们首先需要访问virtualenv可以使用 pip 安装命令。

通过键入以下命令升级 pip 并安装软件包:

  • sudo -H pip3 install --upgrade pip
  • sudo -H pip3 install virtualenv

-H标志确保安全策略将home环境变量设置为目标用户的主目录。

随着virtualenv安装,我们可以开始形成我们的环境。创建并移动到一个目录,我们可以在其中保存我们的项目文件。我们将称之为my_project_dir,但您应该使用对您和您正在从事的工作有意义的名称。

  • mkdir ~/my_project_dir
  • cd ~/my_project_dir

在项目目录中,我们将创建一个 Python 虚拟环境。出于本教程的目的,我们将称之为它,my_project_env但您应该将其称为与您的项目相关的东西。

  • virtualenv my_project_env

这将创建一个my_project_env在您的目录中调用my_project_dir目录。在里面,它将安装一个本地版本的 Python 和一个本地版本的 pip。我们可以使用它为 Jupyter 安装和配置隔离的 Python 环境。

在我们安装 Jupyter 之前,我们需要激活虚拟环境。您可以通过键入:

  • source my_project_env/bin/activate

您的提示应更改以指示您现在正在 Python 虚拟环境中操作。命令提示符现在看是这样的:(my_project_env)user@host:~/my_project_dir$

此时,您已准备好将 Jupyter 安装到此虚拟环境中。

第 3 步 – 安装 Jupyter

在您的虚拟环境处于活动状态时,使用 pip 的本地实例安装 Jupyter。

注意:当激活虚拟环境时(当您的提示(my_project_env)前面有提示时),即使您使用的是 Python 3,也请使用pip代替pip3。该工具的虚拟环境副本始终命名为pip,无论 Python 版本如何。

  • pip install jupyter

此时,您已成功安装运行 Jupyter 所需的所有软件。我们现在可以启动 Notebook 服务器。

第 4 步 – 运行 Jupyter Notebook

您现在拥有运行 Jupyter Notebook 所需的一切!要运行它,请执行以下命令:

  • jupyter notebook

Jupyter Notebook 的活动日志将打印到终端。当您运行 Jupyter Notebook 时,它会在特定端口号上运行。您运行的第一个 Notebook 通常会使用 port 8888要检查运行 Jupyter Notebook 的特定端口号,请参阅用于启动它的命令的输出:

Output
[I 21:23:21.198 NotebookApp] Writing notebook server cookie secret to /run/user/1001/jupyter/notebook_cookie_secret [I 21:23:21.361 NotebookApp] Serving notebooks from local directory: /home/sammy/my_project_dir [I 21:23:21.361 NotebookApp] The Jupyter Notebook is running at: [I 21:23:21.361 NotebookApp] http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72 [I 21:23:21.361 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 21:23:21.361 NotebookApp] No web browser found: could not locate runnable browser. [C 21:23:21.361 NotebookApp] Copy/paste this URL into your browser when you connect for the first time, to login with a token: http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72

如果您在本地计算机(而不是服务器上)上运行 Jupyter Notebook,则可以导航到显示的 URL 以连接到 Jupyter Notebook。如果您在服务器上运行 Jupyter Notebook,则需要使用 SSH 隧道连接到服务器,如下一节所述。

此时,您可以保持 SSH 连接打开并保持 Jupyter Notebook 运行,或者您可以退出应用程序并在设置 SSH 隧道后重新运行它。让我们选择停止 Jupyter Notebook 进程。一旦我们设置了 SSH 隧道,我们将再次运行它。要停止 Jupyter Notebook 进程,请按CTRL+C,键入Y,然后ENTER进行确认。将显示以下输出:

Output
[C 21:28:28.512 NotebookApp] Shutdown confirmed [I 21:28:28.512 NotebookApp] Shutting down 0 kernels

我们现在将设置一个 SSH 隧道,以便我们可以访问 Notebook。

步骤 5 — 使用 SSH 隧道连接到服务器

在本节中,我们将演示如何使用 SSH 隧道连接到 Jupyter Notebook Web 界面。由于Jupyter笔记本电脑将在服务器(如在特定端口上运行:8888:8889等等),SSH隧道,可以连接到服务器的端口安全。

接下来的两个小节描述了如何从 1) Mac 或 Linux,或 2) Windows 创建 SSH 隧道。请参阅您本地计算机的小节。

Mac 或 Linux 的 SSH 隧道

如果您使用的是 Mac 或 Linux 本地计算机,则创建 SSH 隧道的步骤与使用 SSH 登录远程服务器类似,只是ssh命令中多了一些参数本小节将概述ssh命令中成功建立隧道所需的其他参数

SSH 隧道可以通过在新的本地终端窗口中运行以下 SSH 命令来完成:

  • ssh -L 8888:localhost:8888 your_server_username@your_server_ip

ssh命令打开 SSH 连接,但-L指定本地(客户端)主机上的给定端口将转发到远程端(服务器)上的给定主机和端口。这意味着8888在服务器上的第二个端口号(例如)上运行的任何内容都将出现在8888本地计算机上的第一个端口号(例如)上。

(可选)将端口更改8888为您选择的端口,以避免使用已被另一个进程使用的端口。

server_username是您在您创建的服务器上的用户名(例如sammy),your_server_ip是您服务器的 IP 地址。

例如,对于用户名sammy和服务器地址203.0.113.0,命令是:

  • ssh -L 8888:localhost:8888 sammy@203.0.113.0

如果运行ssh -L命令后没有出现错误,您可以进入您的编程环境并运行 Jupyter Notebook:

  • jupyter notebook

您将收到带有 URL 的输出。从本地计算机上的 Web 浏览器中,打开带有以 开头的 URL 的 Jupyter Notebook Web 界面http://localhost:8888确保包含令牌编号,或在出现提示时输入令牌编号字符串http://localhost:8888

Windows 和 Putty 的 SSH 隧道

如果您使用的是 Windows,则可以使用Putty创建 SSH 隧道

首先,输入服务器 URL 或 IP 地址作为主机名,如下所示:

设置 SSH 隧道的主机名

接下来,单击左窗格底部的SSH以展开菜单,然后单击Tunnels输入要用于访问本地计算机上的 Jupyter 的本地端口号。选择 8000或更大,以避免其他服务所使用的端口,并设定目的地,其中是Jupyter笔记本运行的端口数量。 localhost:8888:8888

现在单击添加按钮,端口应该出现在转发端口列表中:

转发端口列表

最后,单击“打开”按钮通过 SSH 连接到服务器并建立所需端口的隧道。在 Web 浏览器中导航到(或您选择的任何端口)以连接到服务器上运行的 Jupyter Notebook。确保包含令牌编号,或在出现提示时输入令牌编号字符串http://localhost:8000http://localhost:8000

第 6 步 – 使用 Jupyter Notebook

本节介绍使用 Jupyter Notebook 的基础知识。如果您当前没有运行 Jupyter Notebook,请使用以下jupyter notebook命令启动它

您现在应该使用 Web 浏览器连接到它。Jupyter Notebook 是一个非常强大的工具,具有许多功能。本节将概述一些基本功能,以帮助您开始使用 Notebook。Jupyter Notebook 将显示运行它的目录中的所有文件和文件夹,因此当您处理项目时,请确保从项目目录启动它。

要创建新的 Notebook 文件,请从右上角的下拉菜单中选择New > Python 3

创建一个新的 Python 3 笔记本

这将打开一个笔记本。我们现在可以在单元格中运行 Python 代码或将单元格更改为 markdown。例如,通过单击顶部导航栏中的单元格>单元格类型> Markdown,将第一个单元格更改为接受 Markdown 我们现在可以使用 Markdown 编写笔记,甚至可以通过将它们放在符号之间包含用LaTeX编写的方程式$$例如,在将其更改为 markdown 后在单元格中键入以下内容:

# First Equation

Let us now implement the following equation:
$$ y = x^2$$

where $x = 2$

要将 Markdown 转换为富文本,请按CTRLENTER键。您应该会收到类似于以下内容的输出:

降价结果

您可以使用 Markdown 单元格来做笔记和记录您的代码。让我们实现该等式并打印结果。单击顶部的单元格,然后同时按下ALTENTER键以在其下方添加一个单元格。在新单元格中输入以下代码。

x = 2
y = x**2
print(y)

要运行代码,请按CTRL+ENTER您将收到以下结果:

第一个方程结果

您现在可以像在任何其他 Python 开发环境中一样导入模块和使用 Notebook!

结论

恭喜!您现在应该能够使用 Jupyter Notebook 在 Markdown 中编写可重现的 Python 代码和注释。要从界面中快速浏览 Jupyter Notebook,请从顶部导航菜单中选择帮助>用户界面教程以了解更多信息。

从这里开始,您可以通过阅读Python 3 中的 Pandas 和 Jupyter Notebook的数据分析和可视化来开始数据分析和可视化项目

觉得文章有用?

点个广告表达一下你的爱意吧 !😁