178

我正在努力思考我可以/不能用 Jupyter 做什么。

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

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

我看到了导出选项,但找不到任何提及“发布”或“公开”本地实时笔记本的内容。这是不可能的吗?思考应该如何使用 Jupyter 是否可能只是一种错误的方式?

4

6 回答 6

83

共享 Jupyter 笔记本的“最佳”方式是简单地将其放在 GitHub 上(并直接查看)或其他一些公共链接,然后使用Jupyter Notebook Viewer。当隐私成为更多问题时,还有其他选择,但肯定更复杂;仅在 Jupyter 中没有内置方法可以做到这一点,但有几个选项是:

托管您自己的 nbviewer

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

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

设置部署脚本

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

于 2015-10-21T00:22:11.900 回答
35

谷歌最近公开了它的内部协作项目(链接在这里)。您可以像启动 Google Sheet 或 Google Doc 一样启动 notebook,然后简单地共享 notebook 或添加协作者。

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

于 2017-11-28T08:35:17.500 回答
24

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

另一个轻量级的替代方法是在笔记本的末尾有一个单元格,它对 nbconvert 进行 shell 调用,以便在运行整个过程后自动刷新:

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

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

于 2015-10-21T00:27:39.847 回答
12

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

静态笔记本

NBViewer是一个很棒的工具。您可以直接在Jupyter中使用它。Github 也有渲染,所以你可以直接链接你的文件(例如https://github.com/my-name/my-repo/blob/master/mynotebook.ipynb

活着的笔记本

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

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

于 2016-10-29T16:29:20.370 回答
7

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

第 1 步:在文本编辑器中打开您的 Jupyter 笔记本并复制可能如下所示的内容: 您的 .ipynb 文件在文本编辑器中打开时可能如下所示

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

第 3 步:创建一个公共 gist 并像在 WordPress 上嵌入 gist 一样嵌入 gist,即,转到 HTML 编辑器并添加如下:

[gist gist_url]

我实际上已经在我的博客上实现了这一点。你可以在这里找到帖子

于 2016-07-19T11:22:55.133 回答
4

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

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

在此处输入图像描述

于 2017-04-19T19:55:26.390 回答