我的Jupyter笔记本上不断弹出一个令人沮丧和持久的错误:
保存操作成功,但笔记本似乎无效。验证错误为:
Notebook validation failed: Additional properties are not allowed ('id' was unexpected):
{
"metadata": {
"trusted": true
},
"id": "breathing-seventh",
"cell_type": "code",
"source": "import pandas as pdnimport numpy as npnimport renimport datetimennimport jsonnimport osnimport copynnimport seaborn as snsnimport matplotlib.pyplot as plt",
"execution_count": 1,
"outputs": []
}
指向我的imports列,其中包含:
import pandas as pd
import numpy as np
import re
import datetime
import json
import os
import copy
import seaborn as sns
import matplotlib.pyplot as plt
我也在笔记本中使用Plotly,我不确定错误是否是由Plotly引起的。我查找了错误并使用了这里提到的修复程序,但错误仍然存在。
请建议。
这是由于nbformat
最近的一个变化,这里详细描述了这个变化。基本上,nbformat 4.5引入了这些id
标签(如果您查找它们,您可能会在每个单元格中找到它们),因此以早期格式存储的每个笔记本都不应该有这些标签-如果早期格式的笔记本有它们,则认为是错误的。
因此,不知怎的,您的笔记本部分更新为具有id
标签,但不是笔记本元数据中列出的nbformat。这也发生在我身上,这肯定是一个bug。(我认为更新应该通过nbformat
发生,其中v5.1.1将自动转换4。X至4.5;但我有5.1.2。这个包和所有其他包都是最新的,我已经重新启动了我的jupyter服务器。
无论如何,解决这个问题的方法是在文本编辑器中打开笔记本(如果您临时将.ipynb
扩展名更改为.txt
,则可以使用Jupyter notebook的内置文本编辑器)。滚动到最底部,最后几行应该看起来像这样:
},
"nbformat": 4,
"nbformat_minor": 1
}
你应该是安全的,将nbformat_minor
号码改为5,保存文件,并像往常一样再次打开笔记本。你不会再收到那些通知了。
我在使用较旧python包的virtualenvs中的较旧笔记本中遇到此错误。当我更新该虚拟环境中的所有python包时,它通常会消失。
我可以通过运行
来解决这个问题conda update --all
我在将笔记-1的单元格粘贴到笔记-2时遇到了这个问题。
一个简单的解决方案是,如果你在单元格中有你打算重用的代码,那么不要复制单元格,而只复制单元格中的内容。
通过这种方式,我能够解决错误。