AttributeError: Can't get attribute '_unpickle_block'
AttributeError: Can't get attribute '_unpickle_block'
使用时:
with open("data_file.pickle", "rb") as pfile:
raw_data = pickle.load(pfile)
我收到错误:
AttributeError: Can't get attribute '_unpickle_block' on <module 'pandas._libs.internals' from '/opt/conda/lib/python3.8/site-packages/pandas/_libs/internals.cpython-38-x86_64-linux-gnu.so'>
针对类似问题的另一个 建议检查我正在使用的 pickle 版本。在我开发代码的机器上和在我 运行 代码所在的服务器上都是一样的。我到处搜索都没有答案。请帮忙。
我认为问题不在于 pickle
模块,而是 Pandas
版本。您的文件可能是使用 Pandas
的旧版本创建的。现在您使用较新的版本,pickle
无法“反序列化”对象,因为 API 发生了变化。
尝试降级您的 Pandas
版本并重新加载文件。您也可以尝试使用 pd.read_pickle
.
在我的例子中,我不得不升级而不是降级 Pandas 版本。只要确保它们匹配即可。给未来读者的一些提示:
询问版本:
import pandas as pd
pd.__version__
并将版本更改为(替换为您自己的版本)
%pip install pandas==1.4.1
使用时:
with open("data_file.pickle", "rb") as pfile:
raw_data = pickle.load(pfile)
我收到错误:
AttributeError: Can't get attribute '_unpickle_block' on <module 'pandas._libs.internals' from '/opt/conda/lib/python3.8/site-packages/pandas/_libs/internals.cpython-38-x86_64-linux-gnu.so'>
针对类似问题的另一个
我认为问题不在于 pickle
模块,而是 Pandas
版本。您的文件可能是使用 Pandas
的旧版本创建的。现在您使用较新的版本,pickle
无法“反序列化”对象,因为 API 发生了变化。
尝试降级您的 Pandas
版本并重新加载文件。您也可以尝试使用 pd.read_pickle
.
在我的例子中,我不得不升级而不是降级 Pandas 版本。只要确保它们匹配即可。给未来读者的一些提示:
询问版本:
import pandas as pd
pd.__version__
并将版本更改为(替换为您自己的版本)
%pip install pandas==1.4.1