我一直在使用“ipython --script”为每个 ipython 笔记本自动保存一个 .py 文件,这样我就可以使用它将类导入其他笔记本。但这最近停止工作,我收到以下错误消息:
`--script` is deprecated. You can trigger nbconvert via pre- or post-save hooks:
ContentsManager.pre_save_hook
FileContentsManager.post_save_hook
A post-save hook has been registered that calls:
ipython nbconvert --to script [notebook]
which behaves similarly to `--script`.
据我了解,我需要设置一个保存后 Hook ,但我不明白如何做到这一点。有人可以解释吗?
最佳答案
我刚刚遇到了一个问题,我无权重新启动我的 Jupyter 实例,因此无法应用我想要的保存后 Hook 。
因此,我提取了关键部分并可以使用 python manual_post_save_hook.py
运行它:
from io import open
from re import sub
from os.path import splitext
from nbconvert.exporters.script import ScriptExporter
for nb_path in ['notebook1.ipynb', 'notebook2.ipynb']:
base, ext = splitext(nb_path)
script, resources = ScriptExporter().from_filename(nb_path)
# mine happen to all be in Python so I needn't bother with the full flexibility
script_fname = base + '.py'
with open(script_fname, 'w', encoding='utf-8') as f:
# remove 'In [ ]' commented lines peppered about
f.write(sub(r'[\n]{2}# In\[[0-9 ]+\]:\s+[\n]{2}', '\n', script))
您可以像使用标准后保存 Hook 一样添加自己的花里胡哨,配置是正确的继续方式;分享给其他可能陷入类似困境的人,他们无法让配置编辑生效。
关于hook - ipython notebook --script 已弃用。如何用后保存 Hook 替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29329667/