运行Jupyter笔记本的4种方法

520 阅读7分钟

Jupyter笔记本是一种越来越流行的编写、执行、记录和分享代码以及交流结果的方式,特别是在Python生态系统中。本文将介绍运行Jupyter笔记本的四种方式。它还将谈到每种方式的一些优点和缺点。笔记本的生态系统正在扩大,有很多选择,所以让我们深入了解一下。

首先,什么是笔记本?

在我们看这些选择之前,让我们回顾一下什么是Jupyter笔记本。笔记本是代码、文档和输出的组合。它本质上是一个捕获的与解释器的互动会话。它包含包含代码或描述性文本的单元,以及执行代码的输出。 由于一个单元可以在一个交互式会话中执行多次,笔记本将包含最近的执行和结果。笔记本文件通常是由作者通过互动过程创建的,使用网络应用程序来编写笔记本文件。正如你在下面的架构图中所看到的,笔记本服务器可以与多个内核通信。内核是笔记本运行的进程,每个内核都是独立的。

Jupyter笔记本的架构

Jupyter支持其他语言,但现在,我们假设我们在谈论Python。然而,本文中没有任何内容要求Python成为内核的首选语言。

用户与笔记本服务器交互(通常,但不总是通过网络浏览器,你很快就会看到),以编辑笔记本中的单元。这些单元格可以包含代码或文档,如markdown。服务器确保所有用户的编辑和操作都在内核中执行。当一个单元被执行时,内核的输出被捕获。笔记本服务器将输出保存在一个文件中,以.ipynb结尾。该文件格式是JSON。你可以在文本编辑器中打开它,并通过版本控制来保存它(尽管它不是很干净,而且可能很乱,难以区别,特别是对于像图片或图表这样的大输出)。你也可以把它发送给其他人来打开或使用。

你如何看待一个笔记本?

首先,让我们把查看笔记本的概念与实际执行它分开。由于笔记本文件包含来自解释器会话的所有数据,它可以被渲染成人类可读的格式来显示这些数据,而无需重新执行代码。因此,查看笔记本比执行笔记本要容易得多,因为你不需要一个内核。你只要把输入的json转换成你想要的任何输出即可。这是一个与他人分享你的代码和输出的好方法,如果他们只想查看,这就是他们所需要的一切。执行的笔记本可以通过一些工具来共享。

nbconvert

nbconvert工具会将笔记本转换为各种输出格式。根据环境中安装的软件包,笔记本可以被呈现为html、PDF、LaTeX和其他格式。它也可以从命令行中执行笔记本,不需要运行服务器,但它并不打算用于交互式使用。转换后的笔记本可以发送给其他人,让他们使用任何他们喜欢的工具,如网络浏览器或PDF浏览器进行查看。

nbviewer

nbviewer网站是共享笔记本的另一个选择。可以把它看作是一个基于网络的nbconvert 工具。

其他服务(如GitHub

许多服务都支持将笔记本渲染成网页。例如,如果.ipynb文件是你正在浏览的仓库的一部分,GitHub将为你呈现你的笔记本。例如,我把我的许多文章放在GitHub上,其中一些就在浏览器中呈现。

如何运行或执行一个Jupyter笔记本?

好了,关于查看笔记本的内容已经足够了,如果我们想实际创建新的笔记本或执行已经创建的笔记本,我们有什么选择呢?要使用一个笔记本,你需要运行一个笔记本服务器。笔记本服务器将启动必要的内核,通过你的网络浏览器(或其他创作工具)为你提供一个用户界面,并将数据来回发送给内核执行。

让我们来看看执行笔记本的四种不同选择。

标准Jupyter服务器

你的第一个选择是运行一个标准的Juypyter笔记本服务器。你可以通过在你的Python环境中安装服务器,然后运行服务器并通过浏览器连接到它来实现。

Jupyter 笔记本

标准的Jupyter笔记本是一种可靠而简单的执行笔记本的方式,也是我大多数时候倾向于使用的。你可以使用pip ,也可以使用Anaconda的conda 来安装它。如果你不选择conda ,我建议使用类似pyenv虚拟环境的东西来设置和运行较新版本的Python。Jupyter项目在其文档中推荐使用Anaconda。

请注意,Jupyter笔记本是相当可配置的,所以一旦你对基本设置感到满意,你可以检查一下扩展

JupyterLab

Jupyter项目的第二个选择是JupyterLab,它是下一代的笔记本服务器。它提供了一个更复杂的前端,对于初级用户来说可能更容易理解。它还支持扩展。

Jupyter笔记本和JupyterLab都被作为JupyterHub的一部分来支持,这是一种为多个用户提供Jupyter笔记本的方式。如果你打算让一个班级或工作组中的多个用户同时运行笔记本,而且你不希望用户必须运行自己的Jupyter笔记本或JupyterLab实例,你可以考虑这样做。

IDE整合

执行笔记本的第二个方法是通过你的集成开发环境(IDE)。许多IDE支持Jupyter笔记本,有时是通过一个插件。例如,Pycharm在专业版中支持笔记本。如果你使用微软的Visual Studio Code,也可以使用Jupyter支持。对于其他IDE,请检查对Jupyter的支持。如果它缺乏支持,你可能对下一个选项非常感兴趣。

托管服务

执行笔记本的第三种流行方式是通过托管服务。有了托管服务,你不需要维护服务器。你可以从任何地方访问你的笔记本。与他人分享代码可能更容易,特别是一些提供协作编辑同一笔记本文件的服务。其中一些是免费的或提供免费版本。有些支持先进的功能,如增强的可视化,更容易的环境设置,GPU支持,以及其他类似IDE的功能。有了这些环境,你可以从头开始创建一个笔记本,或者上传一个现有的.ipynb文件,所以你可以从一个环境(或你自己的设置)中获取工作,并将其转移到服务中。如果你使用的是源代码控制(我希望你是),那么你可以通过克隆你的存储库来轻松地添加你的笔记本。

  1. DeepNote- 一个有免费版本的数据科学笔记本。支持与其他用户的合作和一些先进的集成。
  2. Cocalc- 一个针对教室设置的服务,支持各种语言和环境
  3. Replit- 带有协作工具的在线IDE,支持超过50种语言,有免费版本。
  4. Datalore(来自JetBrains)--一个具有PyCharm功能的Jupyter笔记本实现,免费版本。
  5. Google Colab- 来自Google的免费Jupyter笔记本,有专业版本。

这似乎是一个竞争激烈的领域,不断有新的选择出现。

命令行

最后但并非最不重要的是,你可能是一个命令行书呆子,想知道你是否必须使用浏览器或花哨的IDE。事实证明,你也有一个选择。nbterm项目允许你从命令行交互地运行Jupyter笔记本。

总结

正如你所看到的,有许多方法可以执行Jupyter笔记本。根据你的需要,你应该能够找到一个适合你的解决方案。我鼓励你尝试一下,看看它们是否能帮助你提高工作效率。

The post4 ways to run Jupyter notebooksappeared first onwrighters.io.