【问题标题】:Turn Off Autosave in IPython Notebook在 IPython Notebook 中关闭自动保存
【发布时间】:2014-09-02 19:56:34
【问题描述】:

我正在寻找一种在 iPython 笔记本中关闭自动保存的方法。我通过谷歌/堆栈溢出搜索看到了关于如何打开自动保存的参考,但我想要相反的(关闭自动保存)。如果这是可以永久设置的东西,而不是在每个笔记本的顶部,那将是首选。

【问题讨论】:

  • 我已经尝试了针对您的问题提供的所有解决方案。它们都不起作用(对我来说)。当启动一个新的 PY 文件时,Notebook 从第一秒开始创建一个“Untitled.ipynb”文件并继续更新它。你终于找到可行的解决方案了吗?
  • @Apostolos - 请注意接受的解决方案已过时。您可以尝试更新的解决方案below
  • 谢谢。我已经解决了这个问题。

标签: python jupyter-notebook autosave


【解决方案1】:

一旦您在浏览器中使用 IPython Notebook,这将禁用自动保存:%autosave 0

更新:JupyterLab 现在有一个 UI 功能:https://github.com/jupyterlab/jupyterlab/pull/3734

【讨论】:

  • 我以前遇到过这个命令,但是有没有办法在 iPython 中永久关闭自动保存?否则,我必须将“%aut​​osave 0”添加到我所有的笔记本中。
  • 非常适合我。我正在使用%%javascript,由于某种原因,Jupyter 每次自动保存时都会执行 js 单元格,这在处理大量数据时可能会很烦人,而 console.loging 会将其发送到浏览器控制台。
  • 我也有同样的问题,这个问题真的很有帮助。
  • % autosave 0 仅适用于 Python 内核。当我使用 C++ (Xeus) 或 Java (iJava) 内核时,它会引发错误消息。
【解决方案2】:

如果您将此添加到您的 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 表示每 30 秒自动保存一次。

【讨论】:

  • 不幸的是,这在 PY3 JNB 的 PY2 上也不起作用 ...
【解决方案3】:

MinRK 的原始解决方案已经过时,部分原因是 IPython/Jupyter 不断变化。除了间接引用here,我找不到合适的文档,但根据这个forum post,现在的解决方案似乎是编辑或创建文件~/.jupyter/custom/custom.js,并添加以下行:

   Jupyter.notebook.set_autosave_interval(0); // disable autosave

这对我有用。您可以通过在启动时查找 Jupyter 笔记本右上角的简短“禁用自动保存”框来确认它是否有效。论坛帖子中的完整解决方案对我不起作用,可能是因为它不再完全有效,并且 custom.js 文件中的错误似乎无声无息地发生了。

【讨论】:

  • 我在 High Sierra 上使用 Jupyter 4.4。 ~/.jupyter 下没有名为 custom 的目录。其实~/.jupyter下面没有任何目录项
  • 确实,没有这样的路径,我想知道您如何根据不存在的数据提出解决方案。无论如何,我在该确切路径中创建了一个“custom.js”并添加了您建议的行。无论如何,我无法测试它,因为我认为 Jupyter NB 一开始就不会读取 custom.js 文件。
  • 这是在 jupyter 4.4.0 上对我有用的唯一方法
  • @Apostolos,“确实,没有这样的路径,我想知道您如何根据不存在的数据提出解决方案”。我想知道你的疑惑。路径对我来说已经存在,或者如果不存在,我做了下一个合乎逻辑的事情并创建了一个名为 custom 的空文件夹。
  • 我不得不将它嵌入到 require 语句中——在下面留下了另一个解决方案。
【解决方案4】:

Windows 上 Jupyter Notebook 5.5.0 的分步解决方案(可能也适用于其他环境/版本)

  1. 找到 Jupyter 配置文件夹:

    from jupyter_core.paths import jupyter_config_dir
    jupyter_dir = jupyter_config_dir()  # C:\users\<user_name>\.jupyter on my machine
    
  2. 创建子文件夹custom,并在其中创建文件custom.js

    i.e. 'C:\users\<user_name>\.jupyter\custom\custom.js'
    
  3. 在 custom.js 中加入以下行:

    IPython.notebook.set_autosave_interval(0);
    
  4. 保存文件并重启 Jupyter Notebook 服务器(主应用)。

  5. 打开笔记本时,您应该会在菜单栏右侧看到“禁用自动保存”短暂显示:

【讨论】:

  • 感谢您的详细指导。这适用于我在 Windows 上使用 IPython 7.16.1 的 Jupyter notebook v6.0.3。
【解决方案5】:

编辑:笔记本加载的自动保存间隔在最新版本的 Jupyter Notebook 中似乎不再起作用(jupyter notebook --version6.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 notebook extensions 的一部分,可以安装

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install
jupyter nbextension enable autosavetime/main

安装后,重启jupyter notebook 并转到编辑 菜单中的nbextensions_config。选择autosavetime扩展名,关闭自动保存,如下:

  • 选中复选框在笔记本加载时设置自动保存间隔。如果为 false,则默认不变。,
  • 在笔记本加载时设置的自动保存间隔(以分钟为单位)输入 0

要测试修改:打开或创建 Python 笔记本并在新单元格中执行,

%%javascript
element.text(Jupyter.notebook.autosave_interval);

如果结果为 0,则您已成功关闭自动保存。恭喜!

【讨论】:

  • 有没有办法在不重启jupyter notebook服务器的情况下改变这个扩展的Autosave interval设置?
  • 我不认为您应该重新启动服务器以使此设置生效。不幸的是,我无法自己测试它:正如编辑中提到的,扩展的那部分停止与最新版本的 Jupyter Notebook 一起使用。
【解决方案6】:

从 Jupyter 4.4 (2019) 开始,一个可行的解决方案是将其添加到您的 custom.js 文件中:

require(['base/js/namespace', 'base/js/events'], function (Jupyter, events) {
  Jupyter.notebook.set_autosave_interval(0);
  console.log("Auto-save has been disabled.");
});

如果没有require 块,javascript 将在Jupyter 对象可用之前执行,从而导致错误。

为了清楚起见,custom.js 应该驻留在 ~/.jupyter/custom/custom.js -- 如果 custom 目录不存在,您必须创建它。

【讨论】:

  • 这对我在 macOS Catalina 上的 Jupyter 6.2.0 有效。如果 ~/.jupyter/custom/custom.js 不存在,请确保创建它。然后停止并重新启动jupyter notebook
猜你喜欢
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
  • 1970-01-01
  • 2013-09-24
  • 2014-05-15
  • 1970-01-01
  • 2014-02-06
  • 1970-01-01
相关资源
最近更新 更多