PyCharm 集成 Jupyter Notebook

上一节介绍了 PyCharm 在科学计算方面支持的功能,其中也提到了PyCharm 集成了 Jupyter 。本节将主要介绍如何在 PyCharm 使用 Jupyter Notebook 相关功能。

1. Jupyter Notebook

Jupyter项目是一个非盈利的开源项目,源于 2014 年的 ipython 项目,支持运行 40 多种编程语言。
Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等。基于它用途的广泛性, 它现在是非常流行的开发工具。

在 PyCharm 内, 可以轻松地编辑、执行和调试 Jupyter Notebook 源代码,并检查执行输出,包括流数据、图像等等。

2. 在 PyCharm 编辑 Jupyter Notebook 文件

step1: 创建新的 Python 项目,指定虚拟环境,并安装 jupyter 包。
图片描述
step2: 在 “Project” 工具栏的上下文菜单里选择 New -> Jupyter Notebook, 在弹出窗口中输入文件名。
图片描述
step3: 扩展名为 .ipynb 文件被创建, 下面的编辑窗口将显示。
图片描述
step4: Jupyter 是个WEB应用,点击黄色灯泡按钮,在菜单中选择 Start Jupyter Server
图片描述
点击日志中的链接,浏览器显示如下:
图片描述
Jupyter Notebook 编辑页面如下,可直接在该页面编辑文件,具体如何使用不是本课程内容,具体请参考Jupyter 官方文档
图片描述

step5: 回到PyCharm编辑文件。Notebook file 是由一个个cell构成的,有三种类型 code、raw 与markdown cell。(cell: 一对In Out会话被视作一个代码单元, 每个代码单元可以单独执行)
图片描述

Tips: 在编辑Python Code Cell 时,相应的代码补全,语法高亮显示,错误信息提示及快速修复等等功能与编辑标准的Python文件一样都是支持的。

编辑完成以后,我们刷新一下对应的浏览器页面,PyCharm 内编辑的内容已经同步更新了。
图片描述

3. 运行与调试 Code Cell

3.1 运行 Code Cell

文件创建完成以后,在 PyCharm 里可以直接运行了。PyCharm 提供了多种运行方式,既可以单独运行一个 Cell, 也可以一次全部运行。不仅可以在同一页面查看运行结果,还可以查看变量详情。
图片描述
此时,我们刷新一下对应的浏览器页面,运行 Cell 生成的图表也显示出来了。
图片描述
除此以外, 点击工具栏中 黄色灯泡图标,在菜单中选择其它的运行方式:

  • Run Cell:执行当前 Cell;
  • Run All Above:执行当前与当前 Cell 上面的所有 Cell;
  • Run All Below:执行当前与当前 Cell 后面的所有 Cell;
  • Run Cell and Select Below:执行当前Cell, 并导航到下一个Cell;
  • Debug Cell:开始调试Cell。
    图片描述

Tips: 如果想清除预览窗口中所有输出,请点击上面的菜单中的 Clear Outputs

在执行过程中,要注意 Cell 之间的依赖关系,比如当前 Cell 代码调用了前一个 Cell 的变量,在执行当前Cell 以前,要先执行前面的Cell, 否则会报错。

图片描述

3.2 调试

在 Code Cell 中设置断点,点击绿色箭头图标,然后选择"Debug Cell"。过程与调试标准的Python 是没实质性区别的。
图片描述

Tips: 如果 当前 Cell 从任何其它 Cell 调用函数,至少要保证函数所在的 Cell 是被 Run过的,如果想单步执行该函数, 需要函数所在的Cell 是被 Debug 过,而不仅仅是 Run 过,这样函数内相关的断点才工作。

图片描述

4. Jupyter Server 管理

4. 1 启动与关闭服务

前面提到通过点击工具栏 黄色灯泡 图标,在弹出菜单中选择 Start Jupyter Server启动服务。实际上要运行 Jupyter 服务器,只需执行任何 Cell 就可以了。当启动 Cell 执行时,PyCharm 使用任何可用端口(默认 8888 端口)在本地主机上启动 Jupyter 服务器。Jupyter 工具窗口会自动打开。
图片描述
Tips: 可以通过 Jupyter 工具窗口中的停止按钮关闭服务,也可以点击工具栏 黄色灯泡 图标,在弹出菜单中选择 Stop Jupyter Server

4.2 配置 Server

当启动任何托管服务器时,默认情况下它使用当前项目解释器和自动选择的端口。实际上可以选择 PyCharm 实例中可用的任何其他解释器,并指定备用端口。也可以使用其它已知 jupyter 服务器的 URL 和 Token,连接到该服务器。

step1: 在 Jupyter 服务器列表中选择"Configure Jupyter Server", 打开服务器设置。
图片描述
step2: 配置服务器
要自定义默认的 Jupyter 服务器,请在 Jupyter 服务器对话框中选择 Use Managed Server (托管服务器),从 Python 解释器列表中选择任何本地 Python 解释器。
图片描述
更改自动检测到的端口,在"port"字段中键入其编号。
图片描述
除此以外,也可以连接到任何正在运行的 Jupyter 服务器,请在 Jupyter 服务器对话框中选择"Configured Server"并指定服务器的路径,比如: 在本地命令行终端启动一个 Jupyter server 。
图片描述
拷贝上面的链接到下面的输入框中,包括 url 与 token。
图片描述
step3: 点击 ok, 然后,切换到配置的服务器,在工具栏中的服务器列表中选择"Switch to current Jupyter Server"。
图片描述
step4: 执行代码后, 可能会遇到下面的信息“新配置的服务器的内核与当前项目解释器不匹配”
图片描述
单击相应的链接Register project interpreter as kernel(将项目解释器注册为配置服务器上的内核)。然后可以在配置的服务器的内核列表中看到它,就可以正常运行 Cell 了。
图片描述

5. 共享 Jupyter Notebooks

PyCharm 通过 Datalore Plugin 实现对 Jupyter Notebooks 的共享。Datalore 是用于数据分析的智能 Web 应用程序。

图片描述
step1: 共享 Notebook, 需要上传文件到 Datalore, 点击工具栏上的 “Upload to Jetbrain Datalore” 按钮。
图片描述
step2: 如果第一次访问 Datalore,系统将要求登录 Datalore 应用程序。
图片描述
step3: 点击 Continue, 使用Datalore 帐户登录, 也可以使用Google 帐户或者Jetbrain 帐户登录。
图片描述

Tips: 有时候申请 Datalore 新帐户会长时间收不到验证邮件,这时可以申请JetBrains 帐户,然后用该帐户登录。

step4: Datalore 会显示为你的帐户生成的 API Token。单击"Confirm"继续
图片描述

Tips: 上面的 Token 是保存在 PyCharm/File -> Preference/Settings -> Tools -> Datalore, 随时都可以注销,注销后再需要上传文件需要重新登录。

图片描述
step5:确认 token 信息后,会显示 Upload Notebook 窗口:
图片描述
step6: 上传成功后,你会在你的 Datalore 帐户下看到上传的文件, 打开它。
图片描述
step7:在打开页面点击 Share 按钮,生成共享链接,其它人就可以通过这个链接访问上传的
Notebook file 了。
图片描述

step8:回到 PyCharm 编辑器,再次点击工具栏上的 “Upload to Jetbrain Datalore” 按钮。会出现带有下面4个选项的菜单。如果不想共享文件了,也可以点击 Manage Access Rights 修改访问权限

图片描述

在"Share Settings “对话框中,单击"关闭公共链接共享” 就可以关闭共享了。

图片描述

6. 小结

本节主要讲述在 PyCharm 里如何编辑、运行与调试,以及共享 Jupyter Notebook 文件,为了更好应用相关的功能,需要对 Jupyter 与 Datalore 这些软件多一些了解,建议多看一下官方文档。

图片描述