python – 如何安装和启用Jupyter扩展以实现可重现?

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

我希望其他人(以及我未来的自己)可以使用幻灯片集,而无需太多的手动步骤(并且不依赖于托管的Jupyter解决方案),因此我选择了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安装RISE会在本地目录中留下痕迹(在Pipfile和Pipfile.lock中).所以,在新机器上(或pipenv –rm之后)使用我的文件时

pipenv install
pipenv run jupyter notebook

是不够的.必须重复两个nbextension步骤以启用RISE扩展,并使Jupyter笔记本中的按钮切换到演示模式.

这可以自动化吗? (不使用其他工具,如conda,docker,vagrant,make或其他构建系统,……)如果是这样,它应该如何自动化?

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

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

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

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

点赞