跳转到主要内容

NBViewer扩展和Jupyter笔记本扩展,用于将NBViewer中查看的笔记本克隆到用户的主目录。

项目描述

该项目是从Daniel Allan的笔记本克隆扩展开始构建的,作为基础。目前需要运行我的NBViewer分支step7才能运行。

安装说明

要快速测试这个版本,最简单的方法是使用包含在本存储库的Docker子文件夹中的Docker镜像和设置说明。

否则,使用与Jupyter主分支相同的安装说明安装我的NBViewer分支step7,特别是使用NBViewer作为JupyterHub服务的设置说明。然后下载此存储库,并在文件夹中运行(点很重要,它表示“当前工作目录”)

pip install .

如果您不想修改源代码,否则

pip install -e .

这将安装相应的Python包,但我们仍然需要告诉Jupyter使用适当的子模块作为笔记本服务器扩展。为此,请运行

jupyter serverextension enable clonenotebooks.cloners --sys-prefix

请确保您已通过Pip、Conda或其他方式安装了nbviewer作为Python包,以便此操作可以正常工作。

然后,将templates文件夹复制到您希望的位置,并在jupyterhub_config.py文件中添加NBViewer的命令

--template-path=/your/preferred/location

然后,请确保包含一个nbviewer_config.py文件(这是目前使用NBViewer的分支的主要原因),其中包含以下行

c.NBViewer.handler_settings    = {'clone_notebooks' : True}

c.NBViewer.local_handler       = "clonenotebooks.renderers.LocalRenderingHandler"
c.NBViewer.url_handler         = "clonenotebooks.renderers.URLRenderingHandler"
c.NBViewer.github_blob_handler = "clonenotebooks.renderers.GitHubBlobRenderingHandler"
c.NBViewer.github_tree_handler = "clonenotebooks.renderers.GitHubTreeRenderingHandler"
c.NBViewer.gist_handler        = "clonenotebooks.renderers.GistRenderingHandler"
c.NBViewer.user_gists_handler  = "clonenotebooks.renderers.UserGistsRenderingHandler"

默认情况下,笔记本将被克隆到由jupyterhub_config.py中的c.Spawner.notebook_dir值确定的根目录。如果要将笔记本克隆到另一个目录,需要在nbviewer_config.py中的c.NBViewer.handler_settings行进行修改,如下所示

c.NBViewer.handler_settings    = {'clone_notebooks' : True, 'clone_to_directory' : <desired directory here>}

可以将{username}作为JupyterHub用户名的占位符,类似于jupyterhub_config.py中的c.Spawner.notebook_dirc.Spawner.default_url的设置。例如以下内容是有效的

c.NBViewer.handler_settings    = {'clone_notebooks' : True, 'clone_to_directory' : '/users/{username[0]}/{username}'}

这将导致笔记本被克隆到/jupyter/users/f/foo(对于用户foo)和/jupyter/users/b/bar(对于用户bar),如果c.Spawner.notebook_dir的值为'/jupyter',并且如果c.Spawner.notebook_dir的值为'/',则笔记本将被克隆到/users/f/foo(对于用户foo)和/users/b/bar(对于用户bar)。特别是,笔记本克隆的目的地将始终相对于内容管理器的根目录(通常等于c.Spawner.notebook_dir的值)。

此存储库中也包含一个nbviewer_config.py的示例副本,在Docker子文件夹中。理想情况下,这应该包含所有配置,但必须承认,这些设置说明比可能更模糊,可能没有建议一个重要的步骤。

如果您遇到任何困难,建议您与Docker子文件夹中的此存储库的Dockerfile进行比较以获取示例设置。请提供有关如何改进文档的所有反馈,因为这些反馈将非常受欢迎。以下是改进文档和/或一般反馈的请求页面链接

内核规格克隆

对于几乎任何来源(本地、Gist、URL)的笔记本,clonenotebooks会在克隆的笔记本所在目录中检查一个“本地”内核规格(kernel.json)文件,假定这个内核规格可以在克隆目标中用于加载运行环境所需的环境。如果找到了,则内核规格会被安装,除了克隆的笔记本之外。分配给内核规格的名称(即<environment_path>/share/jupyter/kernels中对应目录的名称)默认是包围目录的名称。(这里使用的“内核名称”不应与kernel.jsondisplay_name属性混淆,后者是最终用户可以看到的,并且不需要是唯一的。)(在URL或Gist的笔记本的情况下,“包围目录”指的是URL“路径”的“基本名称”,不包括文件名,例如testhttps://example.com/test/notebook.ipynb中。)如果已找到具有相同名称的内核规格,则覆盖先前的那个。特别是,如果您更新了目录中的内核规格(kernel.json)文件,然后从该目录克隆另一个笔记本,则更新的内核规格将替换先前的那个。

对于从GitHub获取的笔记本,其行为略有不同。首先,clonenotebooks会在存储库的根目录检查是否存在“全局”kernelspec。其次,它会在笔记本的目录中检查“局部”kernelspec,就像上面提到的案例一样。如果找到了“局部”kernelspec,无论是否也找到了“全局”kernelspec,都会安装“局部”kernelspec,并且名称为<repo_name>-<branch_name>-<enclosing_directory>(以避免与任何“全局”kernelspec发生名称冲突)。如果找到了“全局”kernelspec,但没有找到“局部”kernelspec,那么“全局”kernelspec将以<repo_name>-<branch_name>的名称安装。(对于位于存储库根目录中的笔记本,位于存储库根目录的任何kernel.json都将被视为“全局”kernelspec,并因此以<repo_name>-<branch_name>安装,即使在这种情况下,kernel.json在技术上也是一个“局部”kernelspec。)

如果需要该功能,并且可以选择合理的默认位置来检查“全局”kernelspec,则可以为其他笔记本源实现“全局”kernelspec。

功能

此扩展可以克隆以下URL提供的笔记本

  • URL url_clone
  • GitHub树视图 github_tree_clone
  • GitHub单个文件视图 github_blob_clone
  • 单个GitHub Gists gist_clone
  • 用户页面上的Gist user_gists_clone
  • 目录中的本地文件 local_dirview_clone
  • 单个本地文件 local_clone

归属权

包含在多容器Dockerfile演示中的示例笔记本来自Jupyter有趣笔记本画廊。它们的归属权属于各自的作者(Filipa RodriguesJason ChinShashi Gowda)。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源分布

clonenotebooks-1.0.3.tar.gz (77.2 kB 查看哈希值)

上传

构建分布

clonenotebooks-1.0.3-py3-none-any.whl (12.4 kB 查看哈希值)

上传于 Python 3

支持