代理模板的jupyter扩展

nbstencilaprox的Python项目详细描述


jupyter+dar/stencila=nbstencilaproxy

jupyter+dar的兼容性探索

演示

单击下面的按钮,在基于此存储库的mybinder.org上启动在线jupyter实例

试试看!binder

通过单击"新建模具会话"打开示例DAR存档:

 src=

关于

本项目是2018年Elife Innovation Sprint和2018年Mozilla Global Sprint的一部分(参见https://github.com/mozilla/global sprint/issues/317

本项目包括两个模块:

  • 一个javascript包,用于在jupyter容器中安装和运行stencila(客户端/ui和服务)
  • 一个python包(nbstencilaproxy),用于安装和运行代理(基于nbserverproxy),以访问用户界面以及stencila提供的服务;该软件包还扩展了jupyter用户界面,以添加一个"new stencila session"按钮

团队

H2>如何?

图像的配置

mybinder.org在映像生成过程中提取目录binder/中的几个配置文件,并安装所需的软件和几个模板内核。

  • environment.ymlrequirements.txt安装python依赖项
  • runtime.txt添加R安装
  • 安装并配置模板的r上下文
  • postbuild
    • 安装笔记本扩展
      • 通过代理运行Stencila主机和Stencila用户界面(详细信息如下)
      • 扩展jupyter用户界面
      • 启用Stencila Jupyter上下文
    • 安装并配置Stencila的纯Python上下文

通过配置环境变量stencila archive,在binder/postbuild中设置默认存档文件。

在Jupyter容器中运行Stencila

我们首先使用Stencila的开发版本运行应用程序,使用node make-w-s-d/our/own/dir,但在配置文件存储(即DAR服务器)时遇到了一些困难,并以我们配置的完整路径运行它,而不是启动相对于\u dirnamedar服务器make.js最终,我们实现了自己的最小npm包,它将stencila作为依赖项,并使用dist目录中的文件运行应用程序的dar服务器和静态文件服务器。 有关详细信息,请参见文件stencila.js。 这使我们能够控制路径,让我们摆脱复杂的开发特性(Substance Bundler等)。

我们还制作了自己版本的app.js,去掉虚拟文件存储内容(vfs),将存储默认为fs(文件系统),因为这是jupyter所需要的—我们不需要托管任何示例。 在同一行中,我们构建了自己的index.html(基于example.html)并提供了它,它允许我们直接呈现一个DAR文档,而不是一个示例和指令列表,并使用我们的a p p.js

相关的路径配置包括本地存储路径以及客户端使用的url,通过nbserverproxy访问dar服务器

dockerfile安装我们的助手npm包并添加+配置nbserverproxy工具(请参见requirements.txtjupyter_notebook_config.py)。

将Stencila连接到Jupyter内核

stencila有r、python、sql、javascript(在浏览器中)和node.js的"执行上下文"(相当于jupyter的"内核")。执行上下文在许多方面不同于内核,包括本地执行和单元格的依赖性分析。这两个都是模板文章和表单的反应式功能执行模型所必需的。

我们可以在docker映像中安装这些执行上下文。但是,stencila还有一个jupytercontext作为stencila的api和jupyter内核之间的桥梁。因此,由于basejupyter/minimal notebook映像已经安装了一个用于python的jupyter内核,所以我们决定使用它。但这确实意味着,Stencila用户界面的某些反应性方面将无法按预期工作。此外,jupytercontext的开发和测试也不完善。

我们在docker镜像中包含了stencila nodenode.js包,它提供了jupytercontext以及nodecontext(用于执行javascript)和sqlitecontext(用于执行sql)。

通过代理提供模板

nbstencilaproxy为代理模板提供jupyter服务器和笔记本扩展。 它基于nbrsessionproxy但不包括nbrsessionproxy对jupyterlab的支持。

安装

安装软件包:

pip install git+https://github.com/minrk/nbstencilaproxy

为系统上的所有用户安装扩展:

jupyter serverextension enable  --py --sys-prefix nbstencilaproxy
jupyter nbextension     install --py --sys-prefix nbstencilaproxy
jupyter nbextension     enable  --py --sys-prefix nbstencilaproxy

开发

  • 使用repo2docker在本地运行
# install repo2docker: https://repo2docker.readthedocs.io/en/latest/usage.html#running-repo2docker-locally# run repo2docker for the local repository
jupyter-repo2docker --debug .
  • 通过访问显示的标记化URL登录,例如http://localhost:8888/?令牌=99A7BC13…

  • 单击jupyter开始页上的"新建>;模板会话"按钮,打开py jupyter示例,或

  • 通过将以下参数附加到URL,打开其中一个包含的示例:

许可证

BSD 3条款许可证

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在未知属性上的PUT和POST失败会引发不同的行为   java无法使GWTRPC正常工作   java如何在安卓中更改一个特定视图的主题?   机器学习为什么改变了java中等式的两面?   java继承和重定向标准输出   java为什么Clojure中嵌套循环/重复速度慢?   使用JavaParser解析Java代码并查找父节点的语句类型   java读取类的方法并在arraylist中存储Web服务的路径名   java模板聚合匹配和投影一个没有id的字段   java为什么给定数组不返回false   java如何链接JLabel和JSpinner以调整大小   在java中,当过滤器只返回一个对象时,如何使用流和过滤器将值填充到对象中   java为什么使用getInstance   如何得到我的。运行java命令的bat文件