如何与非程序员共享 Jupyter 笔记本?

How can I share Jupyter notebooks with non-programmers?

我正在努力思考我 can/cannot 使用 Jupyter 所做的事情。

我在我们的内部服务器上有一个 Jupyter 服务器 运行,可通过 VPN 访问并受密码保护。

我是唯一一个实际创建笔记本的人,但我想让一些笔记本以只读方式对其他团队成员可见。理想情况下,我可以与他们共享一个 URL,他们可以在他们想要查看包含刷新数据的笔记本时为其添加书签。

我看到了导出选项,但找不到任何关于 "publishing" 或 "making public" 本地实时笔记本的提及。这不可能吗?考虑如何使用 Jupyter 可能只是一种错误的方式?

共享 Jupyter notebook 的 "best" 方法是简单地将它放在 GitHub(并直接查看)或其他 public link 上并使用Jupyter Notebook Viewer。当隐私成为一个更重要的问题时,还有其他选择,但它肯定更复杂;没有内置的方法可以单独在 Jupyter 中执行此操作,但有几个选项是:

托管您自己的 nbviewer

GitHub和Jupyter Notebook Veiwer都使用同一个工具将.ipynb文件渲染成静态HTML,这个工具就是nbviewer.

安装说明比我愿意在这里介绍的要复杂,但如果您的 company/team 有一个不需要密码访问的共享服务器,那么您可以在该服务器上托管 nbviewer 并直接它从您的认证服务器加载。这可能需要比您在文档中找到的更高级的配置。

设置部署脚本

如果您不一定需要 live 更新 HTML 那么您可以在您的认证服务器上设置一个脚本,该脚本将只使用 Jupyter 的内置导出选项创建静态 HTML 文件,然后将它们发送到更 public 可访问的服务器。

迈克尔关于 运行 您自己的 nbviewer 实例的建议是我过去在企业 Github 服务器上使用的一个很好的实例。

另一种轻量级替代方法是在笔记本的末尾放置一个单元格,该单元格对 nbconvert 进行 shell 调用,以便在完成 运行 之后自动刷新:

!ipython nbconvert <notebook name>.ipynb --to html

编辑:对于 Jupyter/IPython 的 Big Split,您现在可能希望将其更改为 !jupyter nbconvert <notebook name>.ipynb --to html

在 WordPress 上执行此操作的一个好方法包括以下步骤:

第 1 步: 在文本编辑器中打开您的 Jupyter 笔记本并复制如下所示的内容: Your .ipynb file may look like this when opened in a text editor

第二步:Ctrl+ACtrl+C这个内容。然后 Ctrl + V 这是你应该创建的 GitHub Gist。

第 3 步: 创建一个 public 要点并嵌入要点,就像您总是在 WordPress 上嵌入要点一样,即转到 HTML 编辑器并像这样添加:

[gist gist_url]

我已经在我的博客上实现了这个。您可以找到 post here

这取决于您打算用笔记本做什么:您是希望用户可以重新计算结果还是只是玩弄它们?

静态笔记本

NBViewer is a great tool. You can directly use it inside Jupyter。 Github也有渲染,所以你可以直接link你的文件(比如https://github.com/my-name/my-repo/blob/master/mynotebook.ipynb

活着的笔记本

如果您希望您的用户能够重新计算某些部分,您也可以使用MyBinder。启动笔记本需要一些时间,但结果是值得的。

正如@Mapl 所说,Google 可以用 Colab 托管您的笔记本。一个不错的功能是通过 GPU 计算你的细胞。

实现此目标的另一种方法是使用 JupyterHub

使用 JupyterHub,您可以创建一个多用户集线器,它生成、管理和代理单用户 Jupyter 笔记本服务器的多个实例。由于其灵活性和自定义选项,JupyterHub 可用于为 class 学生、企业数据科学小组或科学研究小组提供笔记本。

Google 最近将 public 作为其内部协作项目 (link here)。您可以像启动 Google Sheet 或 Google 文档一样启动笔记本,然后只需共享笔记本或添加协作者..

目前,这是对我来说最简单的方法。