浏览器中的Python科学

作者:Joey Bernard

过去,如果您想要一个友好的Python编程环境,您会使用Ipython。实际上,Ipython项目由三个部分组成:标准的控制台界面、基于Qt的GUI界面以及可以使用Web浏览器连接的Web服务器界面。特别是Web浏览器界面,已经成为使用Python进行科学编程的事实标准方式。事实上,它已经变得非常流行,以至于已经衍生出一个独立的项目,名为Jupyter。在本文中,我将介绍如何启动并运行最新版本,并讨论一旦设置完成后,您可以使用它来做什么。

第一步是安装最新版本。由于它正处于非常活跃的开发中,您可能需要保持系统上的版本为最新。pip 绝对是执行此操作最简单的方法。以下命令将安装Jupyter(如果尚未安装),或者将Jupyter更新到最新版本


sudo pip install --upgrade jupyter

请确保您已安装C编译器以及Python的开发包。例如,在基于Debian的系统上,您可以通过执行以下命令来确保您已准备就绪


sudo apt-get install python-dev build-essentials

这应确保您已安装所需的一切。

要启动Jupyter,请打开终端窗口并输入命令


jupyter notebook --no-browser

这将启动一个Web服务器,监听端口8888,该服务器将接受来自本地计算机的连接。出于安全原因,默认情况下,它将忽略来自外部计算机的传入连接。如果您想将其设置为接受来自外部计算机的连接,您可以通过添加一个额外的选项来做到这一点


jupyter notebook --no-browser --ip=*

这会使您的Jupyter服务器完全开放,因此强烈建议不要这样做,除非您位于安全的专用网络上。否则,您应该设置某种用户身份验证来管理谁可以使用您的系统。

一旦Jupyter启动并运行,打开浏览器并指向https://127.0.0.1:8888。在顶部,您将看到一系列选项卡,对应工作空间的每个部分。大多数人将只会看到三个:文件、运行和集群。如果您使用的是Anaconda Python发行版,您将获得第四个名为Conda的选项卡。

图1. 首次进入Jupyter时,您将看到当前工作目录的文件列表。

启动时,您将位于第一个选项卡“文件”中。这只是当前工作目录的目录列表。您可能目前没有任何可用的笔记本,因此您需要创建一个新的笔记本。您可以通过单击屏幕右侧标有“新建”的下拉列表,然后在菜单上选择“Python笔记本”条目来完成此操作。这将打开一个新的浏览器选项卡并加载一个新的空白笔记本。

图2. 单击“新建”选项卡将在新的浏览器选项卡中加载一个新的空白笔记本。

第二个选项卡向您显示在此特定服务器上运行的所有活动笔记本。您可以单击相关链接以在新浏览器选项卡中打开选定的笔记本,或者单击“关闭”按钮以停止选定的笔记本。还有一个用于任何活动终端会话的部分。“集群”部分提供有关在您的系统上配置的并行Python引擎的状态信息。默认情况下,这根本没有配置。

图3. 您可以获得所有活动笔记本和终端会话的列表。

如果您使用的是Anaconda,您将获得第四个名为Conda的部分。此部分为您提供有关哪些软件包可用以及哪些软件包已安装的详细信息。您甚至可以管理您的Conda环境,创建新的环境、导出现有的环境或删除您不再需要的环境。

图4. Jupyter允许您检查Anaconda软件包和环境的详细信息。

让我们看一下您可以使用笔记本本身做什么。对于使用过Maple或Mathematica等应用程序的人来说,界面应该会感到熟悉。您的输入在称为单元格的部分中输入。单元格可以是不同的类型,即代码、Markdown文本或标题。这样,您可以拥有文本单元格来描述代码部分,解释代码正在做什么以及原因。当您进行科学计算时,这非常有用,因为它允许您将文档与代码一起包含,因此一切都保持同步和最新。

当您开始输入代码行时,按Enter键会将您带到同一单元格内的新行。此时,任何代码都不会被执行。当您准备好运行单元格时,同时按下Shift和Enter键。所有代码都在同一个Python引擎中运行,因此一个单元格的结果将在以后可用于其他单元格。

图5. 您可以在笔记本中看到Python代码的输出。

您还可以导入额外的Python模块,就像在任何其他Python环境中一样。用于可视化数据和结果的最有用模块是matplotlib。如果您导入matplotlib模块并执行绘图命令,Jupyter可以直接在笔记本中渲染生成的图形。

图6. Jupyter可以直接在笔记本中渲染matplotlib图形。

如您所见,您需要使用以 % 字符开头的额外语句来告诉Jupyter将绘图渲染为笔记本内的图像。否则,绘图将在新窗口中渲染。这个新语句称为魔法命令 (magic)。有完整的魔法命令库可用。例如,您可以使用timeit魔法命令来分析运行单元格内代码所需的时间。

图7. 有几个可用的魔法命令,例如timeit魔法命令,用于查找代码单元格的运行时间。

如果是一段运行时间较短的代码,Jupyter会自动运行多次以获得平均运行时间。这使您可以致力于优化代码以及开发代码。

当您准备好分享您的结果时,有几种不同的选项可用。您始终可以直接共享Jupyter笔记本。所有内容都存储在一个文件名以 .ipynb 结尾的文件中。其他选项在一定程度上取决于您在系统上安装了哪些Python模块。最常用的格式是单个静态HTML页面或PDF文档。如果您要展示您的结果,您甚至可以将其导出为基于HTML的演示文稿,其中单元格被格式化为单独的幻灯片。所有这些选项都可以在“文件”→“下载为”菜单项下找到。

希望本文展示了一些您可以在自己的代码中使用的功能。Jupyter对于科学探索尤其有用。您可以尝试许多不同的计算,并进行不同类型的数据分析,并在笔记本中立即看到结果。当您得出有用的结论时,您可以与不断增长的Jupyter用户社区中的其他人分享笔记本。

加载Disqus评论