关闭IPython Notebook中的自动保存
我想找个办法在iPython笔记本中关闭自动保存功能。我在谷歌和Stack Overflow上看到过关于如何开启自动保存的资料,但我想要的是关闭自动保存。如果能永久设置这个功能,而不是每个笔记本都要设置一次,那就更好了。
7 个回答
编辑: 最近版本的Jupyter Notebook(在命令jupyter notebook --version
中显示为6.0.1
)似乎不再支持在加载笔记本时的自动保存间隔。所以我又回到了custom.js
的解决方案。
mkdir -p ~/.jupyter/custom
echo "Jupyter.notebook.set_autosave_interval(0);" >> ~/.jupyter/custom/custom.js
正如Thomas Maloney所提到的,JupyterLab现在有一个命令可以做到这一点(在设置菜单中取消勾选自动保存文档)。
在Jupyter Notebook中,我觉得autosavetime
这个扩展比custom.js
文件更容易使用。autosavetime
扩展是Jupyter笔记本扩展的一部分,可以通过以下命令安装:
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install
jupyter nbextension enable autosavetime/main
安装完成后,重启jupyter notebook
,然后在编辑菜单中找到nbextensions_config。选择autosavetime
扩展,并按照以下步骤关闭自动保存:
- 勾选在加载笔记本时设置自动保存间隔。如果为假,默认值不变。,
- 在在加载笔记本时设置的自动保存间隔(以分钟为单位)中输入0。
要测试这个修改:打开或创建一个Python笔记本,在一个新单元格中执行:
%%javascript
element.text(Jupyter.notebook.autosave_interval);
如果结果是0,恭喜你,成功关闭了自动保存!
在Windows上为Jupyter Notebook 5.5.0提供的逐步解决方案(可能也适用于其他环境/版本)
找到Jupyter的配置文件夹:
from jupyter_core.paths import jupyter_config_dir jupyter_dir = jupyter_config_dir() # C:\users\<user_name>\.jupyter on my machine
在这个文件夹里创建一个叫
custom
的子文件夹,并在里面创建一个文件custom.js
:i.e. 'C:\users\<user_name>\.jupyter\custom\custom.js'
在custom.js文件里添加以下内容:
IPython.notebook.set_autosave_interval(0);
保存文件,然后重启Jupyter Notebook服务器(主应用程序)。
当你打开一个笔记本时,应该能在菜单栏的右侧看到“自动保存已禁用”短暂出现:
MinRK最初提供的解决方案已经过时了,主要是因为IPython/Jupyter一直在不断变化。我找不到合适的文档来说明这个问题,除了这里有一个间接的参考链接这里。不过根据这个论坛帖子,现在的解决办法似乎是编辑或创建一个文件~/.jupyter/custom/custom.js
,然后添加以下内容:
Jupyter.notebook.set_autosave_interval(0); // disable autosave
这个方法对我有效。你可以通过在启动Jupyter笔记本时查看右上角是否出现“自动保存已禁用”的短暂提示框来确认它是否有效。论坛帖子中的完整解决方案对我没有用,可能是因为它已经不完全有效了,而且在custom.js文件中的错误似乎不会显示出来。
在浏览器中使用IPython Notebook时,可以通过输入 %autosave 0
来关闭自动保存功能。
更新:现在在JupyterLab中有一个用户界面功能,可以查看这个链接了解更多信息: https://github.com/jupyterlab/jupyterlab/pull/3734
如果你把这个添加到你的 custom.js
文件里,它会关闭所有笔记本的自动保存功能:
$([IPython.events]).on("notebook_loaded.Notebook", function () {
IPython.notebook.set_autosave_interval(0);
});
custom.js
文件的位置是 $(ipython locate profile)/static/custom/custom.js
。你也可以用类似的方法来调整自动保存的时间间隔。这个时间是以毫秒为单位的,所以设置为 30000 就意味着每三十秒自动保存一次。