这是jupyter notebook 插件开发的系列文档之一, 文章最末尾列出了这个系列的所有博客连接.
怎样扩展notebook功能
Jupyter Notebook客户端和服务器应用程序都可以进行深度定制。他们的行为可以通过分别创建以下功能来扩展:
- nbextension:笔记本扩展
- 一个单独的JS文件或JavaScript目录或Cascading StyleSheets等,它们至少包含一个AMD模块,该模块导出一个函数
load_ipython_extension
- 一个单独的JS文件或JavaScript目录或Cascading StyleSheets等,它们至少包含一个AMD模块,该模块导出一个函数
- 服务器扩展:一个可导入的Python模块
- 实现load_jupyter_server_extension
- bundler扩展:一个可导入的Python模块,利用
File - > Download as / Deploy
作为菜单项触发器- 实现
bundler
方法
- 实现
为什么要为Jupyter扩展创建一个Python包?
由于很少有服务器扩展没有任何前端组件(nExxtension),为了方便和一致,所有这些客户端和服务器扩展及其资产都可以作为Python包打包和版本化,并带有一些简单的命令。这使得用户可以更容易地安装扩展包并且不易出错。
安装Jupyter扩展
安装一个包含Jupyter扩展的Python包
有几种方法可以获得包含Jupyter Extensions的Python包。通常,您会使用软件包管理器:
1 | pip install helpful_package |
启用服务器扩展
最简单的情况是启用没有前端组件的服务器扩展。
希望将其配置存储在其主目录中的pip用户将键入以下命令:
1 | jupyter serverextension enable --py helpful_package |
或者,virtualenv或conda用户可以传递–sys-prefix,以保持其环境的独立性和可重复性。例如:
1 | # Make sure that your virtualenv or conda environment is activated |
安装nbextension assets
如果某个软件包还具nbextension前端资源(但默认情况下未启用),请使用以下命令安装这些资源:
1 | jupyter nbextension install --py helpful_package # or --sys-prefix if using virtualenv or conda |
启用nbextension资源
如果每次在浏览器中加载Jupyter应用程序(例如实验室,笔记本,仪表板,终端)时,你的应用程序需要加载资源,则可使用以下命令启用nbextension:
1 | jupyter nbextension enable --py helpful_package # or --sys-prefix if using virtualenv or conda |
它生效了吗?通过列出Jupyter扩展来检查
在运行一个或多个扩展安装步骤之后,您可以列出目前已知的有关nbextensions,服务器扩展或捆绑包扩展的内容。以下命令将列出哪些扩展可用,是否已启用以及其他扩展详细信息:
1 | jupyter nbextension list |
示例 - 服务器扩展
使用服务器扩展创建一个Python包
下面是一个python模块的例子,它包含一个服务器扩展。它有这个目录结构:
1 | - setup.py |
定义服务器扩展
此示例显示服务器扩展及其load_jupyter_server_extension
函数是在__init__.py
文件中定义的。
my_module/__init__.py
:
1 | def _jupyter_server_extension_paths(): |
示例 - 服务器扩展和nbextension
使用服务器扩展创建一个Python包
这是另一个带有前端模块的服务器扩展。它应当有这样的目录结构:
1 | - setup.py |
定义服务器扩展和nbextension
这个例子再次表明服务器扩展及其load_jupyter_server_extension
函数是在__init__.py
文件中定义的。这一次,nbextension
还有一个函数_jupyter_nbextension_path
。
1 |
|
安装并启用服务器扩展和nbextension
1 | jupyter nbextension install --py my_fancy_module [--sys-prefix|--user] |
案例- Bundler extension
目录结构
1 | - setup.py |
在__init__.py
中定义
1 | import tarfile |
jupyter notebook 扩展开发系列:
- jupyter notebook 扩展开发之自定义请求处理程序
- jupyter notebook 扩展开发之内容API
- jupyter notebook 扩展开发之 Custom bundler extensions
- jupyter notebook 扩展开发之 文件保存钩子
- jupyter notebook扩展开发之前端插件开发
- jupyter notebook 扩展开发之 将Jupyter扩展作为Python包分发
转载请注明出处:http://mlln.cn 或者 http://jupyter.cn