Jupyter Notebook无法保存:帖子中缺少“ _xsrf”参数


162

我已经在jupyter笔记本上运行了大约26个小时的脚本;我还没有真正将计算机用于其他用途,但是它需要运行此程序,该程序大约需要30个小时才能完成。大约21个小时后,它停止保存了,我的终端有了这个:

403 PUT /api/contents/[file.ipynb] (::1): '_xsrf' argument missing from POST

其中[file.ipynb]是我的jupyter笔记本的位置。它还说:

'_xsrf' argument missing from post

再次在笔记本的右上角。该程序仍在运行,并且我不想重新启动jupyter Notebook并且不得不再次运行该程序,因为我有最后期限,我还能做点什么?

我使用的是谷歌浏览器,但我的代码中没有LastPass扩展名或任何'%'字符,如另一篇文章所建议的那样。

谢谢你的帮助!


15
如果您进行搜索,则会有关于此主题的在线讨论。我看到的一个建议是在新的浏览器窗口中打开同一笔记本,从而解决了该问题。然后,您可以关闭该新窗口并继续在上一个窗口中工作。
AlexK

感谢@AlexK,这可以解决我的MBP上的相同问题。
RandomWalker

Answers:


308

我发现的最简单方法是:

https://github.com/nteract/hydrogen/issues/922#issuecomment-405456346

只需在同一内核上打开另一个(非运行中的,现有的)笔记本,问题就神奇地消失了。您可以再次保存以前显示该_xsrf错误的笔记本。

如果您已经关闭了Jupyter主页,则可以在启动Jupyter的终端上找到指向该链接的链接。


22
这挽救了我的一天。如果我没有遇到此解决方案,那么将失去4天的工作量。谢谢!
哈里·达塔

14
我不需要打开新笔记本。相反,我重新打开了,并重新连接了内核。在某些时候,我还重新启动了内核。
user650654 '19

1
在刷新笔记本列表之前,甚至不允许我打开新笔记本。在此之后我打开一个新的笔记本和错误是disappeared..😄
Pavindu

2
请注意,解决方法要求笔记本是较早创建的,因此请打开另一个现有的非运行笔记本,不要创建新笔记本或打开正在运行的笔记本,这都会引发相同的错误。
mirekphd

5
这就是为什么我喜欢stackoverflow
Albert Chen

79

我遇到的解决方案似乎太简单了,但确实有效。转到/ tree aka Jupyter主页,然后刷新浏览器。工作了


3
这对我有用,而就我而言,打开另一个笔记本的解决方案失败了。
DISC-O

谢天谢地,我可以看到我对哪些帖子进行了投票,因此当我忘记并在一年后回来时,我知道该使用哪种解决方案。
eric

7

我每天使用jupyter笔记本,直到今天为止从未遇到过此问题。我整天打开笔记本电脑,但是笔记本电脑什么都没运行,然后无明显原因停止自动保存,并'_xsrf' argument missing from POST显示右上角的错误消息。仅供参考-这是python3笔记本。

我不知道此问题的原因,但是最近我已将python3版本升级到3.7.2,并将几天前所有站点包都升级到了最新版本,这可能是原因。

至于解决方案,正如@AlexK的评论所建议的那样,我在新窗口(实际上是不同的浏览器)中打开了同一笔记本,使用

jupyter notebook list

在终端中获取带有登录令牌的URL。

这导致我再次打开笔记本并可以保存笔记本,但是自上次成功自动保存以来输入的信息丢失了。值得庆幸的是,我坏掉的实例仍然处于打开状态,除了保存以外,还可以进行其他工作,因此我可以简单地复制并粘贴信息,然后单击保存。因此,如果尝试此操作,请保持断开的实例处于打开状态!


3

当我单击“保存”按钮时,出现此错误。根据本文和其他网站上的答案,我找到了解决方案。我的jupyter笔记本是通过pip安装的。因此,我通过在Windows命令行中键入“ jupyter notebook”来访问它。

(1)打开一个新的命令窗口,然后打开一个新的jupyter笔记本。尝试再次保存在旧笔记本中,这一次,错误为“失败:禁止”

(2)然后在旧笔记本中单击“下载为”,它将弹出一个新窗口,询问您令牌。

在此处输入图片说明

(3)打开另一个命令窗口,然后打开另一个jupyter笔记本,键入'jupyter笔记本列表',将代码复制到'token ='之后和::之前的框中。您可以节省时间。如果失败,您可以尝试列表中的另一个令牌


这为我做到了,谢谢!只是想澄清最后一步-我花了一分钟的时间来解释你的意思。该命令jupyter notebook list将吐出一个长网址,其中一部分是在token=和之间出现的一长串字符::。复制此字符串并将其粘贴到步骤(2)的“密码或令牌”框中,原始jupyter笔记本中的“禁止”错误将消失。
Jorge Aurelio Menendez,

3

对我有用的唯一解决方案是:

  1. 我在Chrome中打开了一个新标签页
  2. 我粘贴了:http:// localhost:8888 /?token = ......
  3. 然后我去了原来的笔记本,我可以保存它

2

解决此问题的1个解决方法是:

  1. 通过以下方法下载无法保存的笔记本:文件->下载为->笔记本(ipynb)。

  2. 通过在jupyter浏览器UI上单击下载的文件来打开下载的笔记本

现在,您应该能够从jupyter UI中保存(或重命名)此笔记本


打开另一个笔记本并不能解决我的问题,但这确实可以(例如下载nb)
Alex

2

就我而言,通过单击“内核”(在笔记本顶部显示)然后单击“重新连接”解决了此问题。

注意已添加:在Jupyter的某些版本中,没有“重新连接”。


1

我在nvidia泊坞窗中使用映像时遇到了相同的问题(无法保存笔记本和.py模块)。解决的方法是在jupyter内部打开终端,不输入任何内容,而是在保存文件后退出。它是在同一浏览器/ jupyter实例中完成的。

机器操作系统:Ubuntu 18.04


0

打开开发人员设置,然后单击控制台并键入以下内容

JSON.parse(document.getElementById('jupyter-config-data')。textContent).token

然后尝试保存笔记本。以前未保存的笔记本现在将保存。


0

这是最简单的方法。

我不需要打开新笔记本。相反,我重新打开了树,并重新连接了内核。在某些时候,我还重新启动了内核。– user650654 '19 Oct 9在0:17


否则,总会有“社区Wiki”答案选项
Double Expresso,

0

通过单击“内核”下拉菜单并选择“中断”,可以解决该问题。


0

使用Jupyter Lab时,投票最多的答案似乎无效。然而,这确实如此。只需将网址复制到新标签中,将“实验室”替换为“树”,然后按Enter键即可加载页面。它将为您的会话生成一个新的csrf令牌,您一切顺利!

我建议默认情况下启用“设置”>“自动保存文档”,以避免担心将来丢失工作。它非常节省时间,因此在任何超时发生之前,所有内容都应该是最新的。

我不需要打开新笔记本。相反,我重新打开了树,并重新连接了内核。在某些时候,我还重新启动了内核。– user650654 '19 Oct 9在0:17


0

就我而言,我有一个关闭的主页选项卡。重新打开Jupyter后,错误已自动消失,我们可以保存文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.