一种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 

错误原因

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...

你可能感兴趣的:(pythonpandas)