问题:Python 3.6/3.8 运行 pd.read_pickle('xxx.p') 时报错

File ".../.local/lib/python3.8/site-packages/pandas/io/pickle.py", line 187, in read_pickle
    return pc.load(f, encoding=None)
File ".../.local/lib/python3.8/site-packages/pandas/compat/pickle_compat.py", line 249, in load
    return up.load()
File "/usr/lib/python3.8/pickle.py", line 1212, in load
    dispatch[key[0]](self)
File "/usr/lib/python3.8/pickle.py", line 1537, in load_stack_global
    self.append(self.find_class(module, name))
File ".../.local/lib/python3.8/site-packages/pandas/compat/pickle_compat.py", line 189, in find_class
    return super().find_class(module, name)
File "/usr/lib/python3.8/pickle.py", line 1581, in find_class
    return _getattribute(sys.modules[module], name)[0]
File "/usr/lib/python3.8/pickle.py", line 331, in _getattribute
    raise AttributeError("Can't get attribute {!r} on {!r}"
AttributeError: Can't get attribute '_unpickle_block' on <module 'pandas._libs.internals' from '.../.local/lib/python3.8/site-packages/pandas/_libs/internals.cpython-38-x86_64-linux-gnu.so'>

原因:猜测中

第一次出现:由Python3.8 + pandas 1.4.2生成文件在装有Python 3.6 + pandas 1.1.5的电脑上运行时报错。

第二次出现:由Python 3.6 + pandas 1.1.5 生成的文件,在Python 3.8 + pandas 1.1.5 上运行。

解决办法:更新或更改 pandas 的版本

第一次出现:在Python 3.8 上 pip install pandas==1.1.5,然后在Python 3.6 电脑上成功运行。

第二次出现:在Python 3.8 上 用回以前版本 pip3 install pandas==1.4.2

太麻烦了。。但是Python 3.6那个电脑我没有sudo权限。。无法保持Python版本一致。。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐