如何在Debian 9上使用Python 3设置Jupyter笔记本

2018-11-15 15:31:23 浏览数 (2)

不使用Debian 9?选择其他版本:
  • Ubuntu 16.04

介绍

Jupyter Notebook为交互式计算提供了一个命令shell作为Web应用程序。该工具可以与多种语言一起使用,包括Python,Julia,R,Haskell和Ruby。它通常用于处理数据,统计建模和机器学习。

本教程将指导您设置Jupyter Notebook以从Debian 9服务器运行,并教您如何连接和使用笔记本。Jupyter笔记本(或简称笔记本)是由Jupyter Notebook应用程序生成的文档,其中包含计算机代码和富文本元素(段落,方程式,图形,链接等),有助于呈现和共享可重复的研究。

在本指南的最后,您将能够使用在远程服务器上运行的Jupyter Notebook运行Python 3代码。

先决条件

为了完成本指南,您应该拥有一个带有基本防火墙的新的Debian 9服务器实例和一个配置了sudo权限的非root用户。您可以通过Debian9指南运行初始服务器设置来了解如何进行此设置。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。

第1步 - 安装Pip和Python标头

要开始这个过程,我们将从Debian存储库下载并安装我们需要的所有项目。稍后我们将使用Python包管理器pip来安装其他组件。

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

代码语言:javascript复制
sudo apt update

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

代码语言:javascript复制
sudo apt install python3-pip python3-dev

Debian 9(“Stretch”)预装了Python 3.5。

我们现在可以继续设置我们将安装Jupyter的Python虚拟环境。

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

现在我们已经拥有了Python 3,它的头文件,并且pip已经准备就绪,我们可以创建一个Python虚拟环境以便于管理。我们将把Jupyter安装到这个虚拟环境中。

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

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

代码语言:javascript复制
sudo -H pip3 install --upgrade pip
sudo -H pip3 install virtualenv

随着virtualenv安装,我们可以开始形成我们的环境。创建并移动到我们可以保存项目文件的目录中:

代码语言:javascript复制
mkdir ~/myprojectdir
cd ~/myprojectdir

在项目目录中,键入以下命令创建Python虚拟环境:

代码语言:javascript复制
virtualenv myprojectenv

这将在您的myprojectdir目录中创建一个名叫myprojectenv的目录。在里面,它将安装本地版本的Python和本地版本的pip。我们可以使用它为Jupyter安装和配置一个独立的Python环境。

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

代码语言:javascript复制
source myprojectenv/bin/activate

您的提示应更改为表明您现在在Python虚拟环境中运行。它看起来像这样:(myprojectenv)user@host:~/myprojectdir$

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

第3步 - 安装Jupyter

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

注意:当虚拟环境被激活时(当您的提示位于其(myprojectenv)前面时),即使您使用的是Python,也请使用pip而不是pip3Python 3. pip无论Python版本是什么,虚拟环境的工具副本始终都会被命名。

代码语言:javascript复制
pip install jupyter

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

第4步 - 运行Jupyter Notebook

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

代码语言:javascript复制
jupyter notebook

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

代码语言:javascript复制
[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/myprojectdir
[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

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

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

代码语言:javascript复制
[C 21:28:28.512 NotebookApp] Shutdown confirmed
[I 21:28:28.512 NotebookApp] Shutting down 0 kernels

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

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

在本节中,我们将学习如何使用SSH隧道连接到Jupyter Notebook Web界面。由于Jupyter Notebook将在服务器上的特定端口(例如:8888:8889等)上运行,因此SSH隧道可以安全地连接到服务器的端口。

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

使用Mac或Linux进行SSH隧道连接

如果您使用的是Mac或Linux,则创建SSH隧道的步骤类似于使用SSH登录到远程服务器,但ssh命令中还有其他参数。本小节将概述ssh命令连接到隧道所需的其他参数。

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

代码语言:javascript复制
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,命令将是:

代码语言:javascript复制
ssh -L 8888:localhost:8888 sammy@203.0.113.0

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

代码语言:javascript复制
jupyter notebook

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

使用Windows和Putty进行SSH隧道连接

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

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

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

现在单击“ 添加”按钮,端口应显示在“ 转发端口”列表中:

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

第6步 - 使用Jupyter Notebook

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

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

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

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

代码语言:javascript复制
# Simple Equation
​
Let us now implement the following equation:
$$ y = x^2$$
​
where $x = 2$

要将降价转换为富文本,请按CTRL ENTER,以下结果应为:

您可以使用markdown单元格做笔记并记录您的代码。让我们实现这个简单的等式并打印结果。单击顶部单元格,然后按ALT ENTER以在其下方添加单元格。在新单元格中输入以下代码。

代码语言:javascript复制
x = 2
y = x**2
print(y)

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

您现在可以像导入任何其他Python开发环境一样导入模块并使用笔记本!

结论

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

更多Debian教程请前往腾讯云 社区学习更多知识。


参考文献:《How To Set Up a Jupyter Notebook with Python 3 on Debian 9》

0 人点赞