如何安装Jupyter扩展并使其具有可重现性?

时间:2018-02-05 13:04:54

标签: python jupyter-notebook reproducible-research pipenv

我想使用RISE a.k.a. live_reveal制作交互式幻灯片集(用于在python中进行一些实时编码的演示),这是Jupyter的笔记本扩展。

我希望其他人(以及我未来的自己)可以使用幻灯片,而无需太多的手动步骤(并且不依赖托管的Jupyter解决方案),因此我选择{{1}管理依赖关系。

我可以开始使用

pipenv

但是,只有pipenv install RISE pipenv run jupyter nbextension install rise --py --sys-prefix pipenv run jupyter nbextension enable rise --py --sys-prefix pipenv run jupyter notebook # to start the jupyter server 会在本地目录中留下痕迹(在pipenv install RISEPipfile中)。因此,在新机器上使用我的文件时(或在Pipfile.lock之后)只需

pipenv --rm

不够。 必须重复两个pipenv install pipenv run jupyter notebook 步骤以启用RISE扩展,并让Jupyter笔记本中的按钮切换到演示模式。

这可以自动化吗?没有使用其他工具,如conda,docker,vagrant,make或其他构建系统,......)如果是这样,应该怎么做?自动化?

我可以告诉nbextension(例如在pipenv中)在安装软件包后运行这两个命令吗?或者我应该让笔记本(Pipfile文件)以某种方式加载扩展名吗?

1 个答案:

答案 0 :(得分:1)

这超出了pipenv的范围。 Pipenv管理你的 python 环境 - 即安装了哪些软件包 - 实际上没有更多。 (一个例外是.env文件中的环境变量加载在pipenv runpipenv shell命令上。您在问题中列出的nbextension命令实际上根本不处理python环境,而是移动javascript和css文件(install rise)并创建(或编辑,如果你安装了其他nbextensions)json配置档案(enable rise)。

无论好坏,pipenv都没有像postinstall挂钩那样运行任意构建命令。 jupyter似乎没有办法预先打包或自动安装扩展程序,尽管我可能错了。

我个人认为,使这种事情可重复,正是您提到的构建工具非常适合。不使用你提到的那种你不想使用的类型的构建工具,你最好的选择是写一个清晰的自述文件,或者你自己的(记录的)postinstall shell脚本。