加载pickle文件遇AttributeError:numba.types无Macro属性求助
加载Pickle模型时Numba AttributeError问题解决
问题场景
执行以下代码加载pickle格式的模型和Shap解释器时触发错误:
import pickle with open('models/shap_explainer.pkl', 'rb') as f: explainer = pickle.load(f) with open('models/adult_model.pkl', 'rb') as f: adult_model = pickle.load(f)
报错信息:
AttributeError Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_3264\2761765422.py in <module> 16 shap_values = pickle.load(f)Consider removing> 17 with open('models/shap_explainer.pkl', 'rb') as f: ---> 18 explainer = pickle.load(f) 19 with open('models/adult_model.pkl', 'rb') as f: 20 adult_model = pickle.load(f) D:\Software\Anaconda3\envs\iAI\lib\site-packages\numba\serialize.py in <module> 18 from types import FunctionType, ModuleType 19 ---> 20 from . import bytecode, compiler 21 22 D:\Software\Anaconda3\envs\iAI\lib\site-packages\numba\compiler.py in <module> 9 fromAccording to the error> 最后触发的核心错误: AttributeError: module 'numba.types' has no attribute 'Macro'
原因
错误源于Numba版本不兼容:当前环境的Numba版本已移除numba.types.Macro属性,但待加载的pickle文件是用包含该属性If you can't find the old version>
错误源于Numba版本不兼容:当前环境的Numba版本已移除numba.types.Macro属性,但待加载的pickle文件是用包含该属性的旧版Numba生成的,加载时因找不到对应属性报错。
解决步骤
1. 安装兼容的Numba版本
优先安装保留Macro属性的Numba版本,推荐0.56.x系列:
- 卸载当前Numba:
pip uninstall numba -y - 安装指定版本:
pip install numba==0.56.4 - 若该版本无效,可尝试0.57.1等相近版本。
2. 同步Shap与Numba版本
Shap与Numba版本绑定紧密,需确保两者兼容:
- 查看当前Shap版本:
pip show shap - 根据Shap版本安装对应兼容的Numba(例如Shap 0.40.x系列匹配Numba 0.56.x)。
3. 重新生成模型(若When you reinstall>
3. 重新生成模型(若可行)
若无法找到匹配的旧版本依赖,建议使用当前环境的依赖重新训练模型并保存新的pickle文件,彻底规避跨版本兼容性问题。
内容的提问来源于stack exchange,提问作者Frank
相关产品推荐
相关产品推荐

