介绍
作为一个开源Web应用程序, Jupyter Notebook允许您创建和共享交互式代码,可视化等。 该工具可与多种编程语言一起使用,包括Python,Julia,R,Haskell和Ruby。 它通常用于处理数据,统计建模和机器学习。
本教程将指导您设置Jupyter Notebook以从Ubuntu 18.04服务器运行,并教您如何连接和使用笔记本。 Jupyter笔记本(或简称笔记本)是由Jupyter Notebook应用程序生成的文档,其中包含计算机代码和富文本元素(段落,方程式,图形,链接等),有助于呈现和共享可重复的研究。
在本指南的最后,您将能够使用在远程服务器上运行的Jupyter Notebook运行Python 3代码。
先决条件
为了完成本指南,您应该拥有一个带有基本防火墙的新Ubuntu 18.04服务器实例和配置了sudo权限的非root用户。 您可以通过运行我们的初始服务器设置教程来了解如何设置它。
第1步 - 设置Python
要开始这个过程,我们将从Ubuntu存储库安装我们的Python编程环境所需的依赖项。 Ubuntu 18.04预装了Python 3.6。 稍后我们将使用Python包管理器pip来安装其他组件。
我们首先需要更新本地apt
包索引,然后下载并安装包:
sudo apt update
接下来,安装pip和Python头文件,这些文件由Jupyter的一些依赖项使用:
sudo apt install python3-pip python3-dev
我们现在可以继续设置我们将安装Jupyter的Python虚拟环境。
第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_dir
目录中创建一个名为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)
时),使用pip
而不是pip3
,即使你使用的是Python 3.虚拟环境的工具副本总是命名为pip
,不管Python是什么版。
pip install jupyter
此时,您已成功安装了运行Jupyter所需的所有软件。 我们现在可以启动Notebook服务器了。
第4步 - 运行Jupyter Notebook
您现在拥有运行Jupyter Notebook所需的一切! 要运行它,请执行以下命令:
jupyter notebook
Jupyter笔记本的活动记录将打印到终端。 当您运行Jupyter Notebook时,它将在特定的端口号上运行。 您运行的第一个笔记本通常使用端口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 Notebook将在服务器上的特定端口上运行(例如: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浏览器中,使用以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 Notebook正在运行的端口号。
现在单击“ 添加”按钮,端口应显示在“ 转发端口”列表中:
最后,单击“ 打开”按钮以通过SSH连接到服务器并隧道连接所需的端口。 在Web浏览器中导航到http://localhost: 8000
(或您选择的任何端口)以连接到服务器上运行的Jupyter Notebook。 确保包含令牌编号,或在http://localhost:8000
处提示时输入令牌编号字符串。
第6步 - 使用Jupyter Notebook
本节介绍使用Jupyter Notebook的基础知识。 如果您当前没有运行Jupyter Notebook,请使用jupyter notebook
命令启动它。
您现在应该使用Web浏览器连接到它。 Jupyter Notebook是一款功能强大的工具,具有许多功能。 本节将概述一些使您开始使用Notebook的基本功能。 Jupyter Notebook将显示其运行目录中的所有文件和文件夹,因此当您处理项目时,请确保从项目目录启动它。
要创建新的Notebook文件,请从右上角的下拉菜单中选择New > 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变为富文本,请按CTRL+ENTER
,结果如下:
您可以使用markdown单元格做笔记并记录您的代码。 让我们实现该等式并打印结果。 单击顶部单元格,然后按ALT+ENTER
在其下方添加单元格。 在新单元格中输入以下代码。
x = 2
y = x**2
print(y)
要运行代码,请按CTRL+ENTER
。 您将收到以下结果:
您现在可以像导入任何其他Python开发环境一样导入模块并使用Notebook!
结论
恭喜! 您现在应该能够使用Jupyter Notebook在Markdown中编写可重现的Python代码和注释。 要从界面中快速浏览Jupyter Notebook,请从顶部导航菜单中选择帮助 > 用户界面导览以了解更多信息。
从这里开始,您可以通过读取来开始数据分析和可视化项目。
如果您对挖掘更多内容感兴趣,可以阅读我们关于时间序列可视化和预测的系列 。