当尝试使用我过去使用过的模板制作新的基于 Jupyter 的演示文稿时,我发现当nbconvert升级到 6.0 以上时,我收到与缺少内置模板相关的错误basic.tpl。为此,创建一个最小的重现器,创建一个名为的模板文件custom.tpl:
{% extends 'basic.tpl' %}
Run Code Online (Sandbox Code Playgroud)
然后拿起任何 Jupyter 笔记本并pip install jupyter nbconvert运行nbconvert notebook.ipynb --to=slides --template=custom.tpl。你会得到这样的异常:
[NbConvertApp] Converting notebook example.ipynb to slides
Traceback (most recent call last):
File "/tmp/tmp.niaMlxSIbz/venv/bin/jupyter-nbconvert", line 8, in <module>
sys.exit(main())
...
File "/tmp/tmp.niaMlxSIbz/custom.tpl", line 1, in top-level template code
{% extends 'basic.tpl' %}
jinja2.exceptions.TemplateNotFound: basic.tpl
Run Code Online (Sandbox Code Playgroud)
如果您这样做pip install 'nbconvert < 6.0',您会发现相同的命令成功了。
我想这与6.0 中模板工作方式的变化有关,但我相信.tpl模板仍然是受支持的,甚至有一个列出的PR 可以恢复基本模板,但我在任何地方都找不到任何说明如何使用对新位置的引用来更新我的模板。
有没有办法通过更改对 的引用来解决此问题'basic.tpl'? …
我制作了一个自定义 nbconvert 模板,并希望它可以从我启动nbconvert实用程序的任何文件夹中访问。我应该把我的模板放在哪里?
我在官方文档中找不到任何内容。我已经尝试了 jupyter 配置的常用位置,例如/usr/share/jupyter, ~/.local/share/jupyter, ~/.jupyter,但无济于事。
到目前为止,我发现的唯一地方是 python 包所在的文件夹:
$ pip show nbconvert | grep Location | cut -d" " -f2
/usr/lib/python3.6/site-packages
Run Code Online (Sandbox Code Playgroud)
如果我nbconvert/templates/html在那里创建目录并将我的模板放入其中,则nbconvert --to html --template <my_template_name> ...工作正常。但这是一个丑陋的黑客,每次更新 nbconvert 时我都需要重新做。
似乎我可以为 nbconvert 提供环境变量,但我更愿意避免使用此选项。
我有一个Jupyter笔记本,我想将其转换成一个Python使用脚本nbconvert命令从内的Jupyter笔记本电脑。
我在笔记本的末尾包含了以下行:
!jupyter nbconvert --to script <filename>.ipynb
Run Code Online (Sandbox Code Playgroud)
这将创建一个Python脚本。但是,我希望生成的.py文件具有以下属性:
# 在[27]:
# 编码:utf-8
忽略%magic命令,例如:
%matplotlib inline!jupyter nbconvert --to script <filename>.ipynb,即笔记本中执行Python转换的命令目前,%magic命令被转换为形式:get_ipython().magic(...),但这些不一定在Python.