报错描述
报错关键词: 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...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。