5

我想使用RISE aka 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 install RISE在本地目录中留下痕迹(在Pipfile和中Pipfile.lock)。因此,在新机器上(或之后pipenv --rm)使用我的文件时

pipenv install
pipenv run jupyter notebook

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

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

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

4

1 回答 1

1

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

无论好坏,pipenv 都没有类似 postinstall 钩子来运行任意构建命令。jupyter 似乎也没有办法预打包或自动安装扩展,尽管我可能错了。

我个人的看法是,使这种事情可重复正是你提到的构建工具的伟大之处。如果不使用您提到的那种您不想使用的构建工具,您最好的选择是编写一个清晰的自述文件或者您自己的(记录的)安装后 shell 脚本。

于 2018-02-10T19:05:54.153 回答