You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

加载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:
---&gt; 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
---&gt; 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 05:50:11