使用时:
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'>
另一个类似问题的answer建议检查我正在使用的pickle的版本,在我开发代码的机器上和运行代码的服务器上都是一样的,我到处都找不到答案,请帮助。
5条答案
按热度按时间fdx2calv1#
我不认为问题出在
pickle
模块,而是Pandas
版本。您的文件可能是用旧版本的Pandas
创建的。现在您使用了新版本,pickle
无法“反序列化”对象,因为API发生了变化。尝试降级您的
Pandas
版本并重新加载文件。您也可以尝试使用pd.read_pickle
。hyrbngr72#
在我的情况下,我不得不升级而不是降级Pandas版本。只要确保它们匹配。给未来读者的一些提示:
询问版本:
并将版本更改为(替换为自己的版本)
w6lpcovy3#
我在使用vscode和.net交互式笔记本扩展时遇到了这个错误。当我更新panda * 和 * 重新启动笔记本时,它得到了解决。
tf7tbtn24#
只需将读取功能从
pickle.load(f)
更改为pd.read_pickle(f)
,而无需更改版本中的任何内容。这就解决了我的问题。
34gzjxbg5#
所有你必须做的是降级你的sklearn版本到1.0.2
不工作?请确保你在你的代码和环境中使用的版本相同.
那就行了。
快乐编码!!