当前位置: 首页 > 后端技术 > Python

一种pandas版本差异导致的pickle序列化、反序列化模型报错

时间:2023-03-26 01:53:56 Python

一种pandas版本差异导致的pickle序列化、反序列化模型报错♀?♀报错描述报错关键词: Can't get attribute '_unpickle_block' pandas._libs.internals internals.cpython-38-x86_64-linux-gnu.so报错详细日志:File "/home/xxxxx-yyyyy/PycharmProjects/xxxxx/nad_num_predict_service_03.py", line 31, in predict loaded_model = ARIMAResults.load('model/arima_model.pkl') File "/home/xxxxx-yyyyy/anaconda3/lib/python3.8/site-packages/statsmodels/base/model.py", line 2239, in load return load_pickle(fname) File "/home/xxxxx-yyyyy/anaconda3/lib/python3.8/site-packages/statsmodels/iolib/smpickle.py", line 42, in load_pickle return pickle.load(fin)AttributeError: Can't get attribute '_unpickle_block' on <module 'pandas._libs.internals' from '/home/xxxxx-yyyyy/anaconda3/lib/python3.8/site-packages/pandas/_libs/internals.cpython-38-x86_64-linux-gnu.so'>错误原因pickle序列化模型与反序列化模型时,使用的pandas版本不一致导致的错误。保持pandas版本一致即可。具体报错的一个例子虚环境中未安装了gunicorn,虚环境中pandas版本=1.4.0,Anaconda Python环境中安装了gunicorn,且pandas版本=1.1.3。在虚环境中直接使用python命令运行flask web项目正常运行,序列化模型正常(save model)。当在虚环境中使用gunicorn运行相同的flask web项目时,反序列化模型(load model)时报上述错误。因为这个gunicorn是Anaconda Python环境的包,它会引用Anaconda Python环境中的pandas,它与虚环境中的pandas版本不一致。参考文献https://stackoverflow.com/que...https://stackoverflow.com/que...https://stackoverflow.com/que...