Jupyter Notebook编程环境

来自集智百科
2017年2月26日 (日) 14:19人工智能讨论 | 贡献的版本

跳转到: 导航搜索

目录

Jupyter Notebooks是什么

Jupyter Notebook是一个Web应用程序,允许你把所有的说明性文字,数学公式,代码和可视化内容结合在一个可轻松共享的文档里。例如,这是我最近特别喜欢共享的Notebook之一,激光干涉引力波观测站(LIGO)对从两个碰撞黑洞发出引力波的检波实验的分析。你可以下载数据,在Notebook上运行代码和重复分析,实际上你可以自己检测引力波。 在使用数据时,Notebooks很快成为了必不可少的工具,你会发现它们被用于数据清理和探索,可视化,机器学习和大数据分析。这是一个我为自己的个人博客制作的Notebook,展示了Notebook的许多特性。通常你会在一个终端做这项工作,无论是普通的Python shell还是IPython,您的可视化将在单独的窗口,任何文档以及各种脚本的功能和类将在单独的文档。但是用Notebook,所有的这些都在一个地方,很容易一起阅读。 Notebooks也在Github上自动呈现。这是一个伟大的功能,让你轻松的分享你的工作。也有http://nbviewer.jupyter.org 能够很好地展现你存在Github repo或别处的Notebook文档。

文艺编程(Literate programming)

Notebook是唐纳德·克努特(高德纳)在1984年提出的一种文艺编程形式。有了文艺编程,我们就可以将文档编辑为一种叙述性的文字伴随着代码的形式,而不是单纯的代码。用唐纳德·克努特的话来说,与其说我们的主要任务是为了指导电脑做什么,还不如将我们的精力集中在给人类解释我们正在让电脑做什么。 毕竟,代码是为人类编写的,而不是电脑。Notebook就很好地提供了这种功能。你能够将编写文档作为叙事文本,以及代码。这不仅对人们阅读你的Notebook有帮助,而且对未来的你想回头做一些分析也很有用。还有:最近,这个文艺编程的想法已经扩展到一种整体编程语言:Eve。

Notebook如何工作

Jupyter notebooks 是由Fernando Perez开发,在IPython基础上形成的项目。IPython是一个python交互环境,类似于Python自带的交互环境,却具有极棒的例如语法高亮和代码自动完成等特性。起初,notebook通过从Web应用程序发送消息(在浏览器中查看notebook)到IPython内核(在后台运行的IPython应用)。内核执行代码,然后把它送回notebook。当前的体系结构是类似的,如下所示。

关键点在于notebook的服务器。你通过你的浏览器以及notebook链接到服务器使其作为一个web应用程序来呈现。你在web应用程序中编写的代码通过服务器发送到内核。内核运行代码并将其发送回服务器,然后任何输出都会呈现的浏览器上。当你保存notebook的时候,它将会以JSON文件以及.ipynb的文件扩展名来写入服务器。 这个架构的优点在于内核不需要运行Python。由于notebook和内核是分开的,任何形式的代码都可以在它们之间传送。例如,两个早期版本的非Python的内核就是为R和Julia语言设计的。在R内核中,用R语言编写的代码将会被送到R内核执行,等同于Python代码在Python内核里运行。因为notebooks的含义并不是很清楚,所以人们将早期的Ipython notebooks重新命名了。新名称Jupyter来自于与Julia,Python和R的结合。如果你感兴趣,这里有一个可用内核的表。 另一个好处是服务器可以通过互联网在任何地方运行和访问。通常,你将会在储存了所有数据和notebook文件的自己的机器上来运行服务器。但是,你也可以设置一个远程机器或者一个像Amazon’s EC2的云实例。然后,你可以在世界任何地方访问你浏览器中的notebooks。

安装Jupyter Notebook

目前安装Jupyter最简便的方式是使用Anaconda,其自带了Jupyter notebooks工具包,用户可以在默认环境下使用notebooks。 要在conda环境中安装Jupyter notebooks,请使用conda install jupyter notebook。同样可以通过pip命令完成Jupyter notebooks的安装:pip install jupyter notebook。 要启动notebook服务器,请在终端或控制台中输入jupyter notebook,随后将在您运行命令的目录中启动服务器,这意味着任何notebook文件都会储存在这个目录下。通常情况下,您希望在notebooks的目录下启动服务器。您可以通过文件系统浏览到notebook所在的位置。

启动notebook服务器

当您运行那个命令(自己尝试!),服务器主页将在您的浏览器中打开。

Notebook-server.png


默认情况下,notebook服务器运行在http://localhost:8888端口。

如果您对此不熟悉,localhost意味着您的计算机,8888是服务器正在通信的端口。

只要服务器仍在运行,您随时可以返回,只要你在浏览器中访问http://localhost:8888即可。

如果您需要启动另外一个服务器,它会先尝试使用端口8888。由于端口已经被占用,新的服务器将在端口8889上运行。然后,您会连接到http://localhost:8889。每新增一个notebook服务器都会使得这个端口号递增1:

您可在此处的列表中看到一些文件和文件夹,这取决于您从哪里启动服务器。在右侧,您可以单击“新建”创建新的notebook、文本文件、文件夹或终端。

“Notebooks”下的列表显示您已安装的内核。

Conda-environments.png

这里我在Python 3环境中运行服务器,所以我有一个Python 3内核可用。 您可在这里看到Python 2。

我还为列表中的Scala 2.10和2.11安装了内核。 如果从conda环境运行Jupyter notebook服务器,您还可以从其他任何环境中选择内核(见下文)。 要创建新的notebook,请单击要使用的内核。

顶部导航有文件,执行和集群的选项。点击文件将显示当前目录下的所有的文件夹及文件。

点击running将列出所有正在执行的脚本并可以进行管理操作。

群组原本的作用是显示已创建的用于并行计算的多CPU核,现在由于已被ipyoaraller代所以并没有什么用处。

如果你从conda环境运行脚本服务器,将可以看到一个“Conda”按钮。用此按钮你可以从Jupyter里面管理环境。你可以创建新环境,安装包,升级包和导出环境等。

Conda-tab.png

关闭Jupyter

要关闭单个脚本,你可以在服务器主页处勾选对应脚本然后点击关闭。 请在关闭前确保已经保存!因为关闭后,你的所有修改都将会丢失。下一次你执行脚本时仍然需要重新运行代码。 Notebook-shutdown.png

你也可以在终端按两次“control + C”来关闭整个服务器,再次强调在作出关闭动作前请保证做好保存,因为该动作会立即关闭所有的在运行的脚本。 Server-shutdown.png

个人工具
名字空间
操作
导航
工具箱