如何修复Mac运行XGBClassifier出现AttributeError: dlsym symbol not found错误
你遇到的AttributeError: dlsym(0x7fa8b0814da0, XGBoosterGetStrFeatureInfo): symbol not found报错,核心原因是安装的XGBoost版本与M1芯片架构不兼容,或者Python绑定包和底层编译的C++库版本不匹配,可按以下步骤修复:
第一步:彻底卸载当前所有XGBoost残留,避免多版本冲突
若用pip管理包,执行:pip uninstall -y xgboost
若用conda管理包,执行:conda remove -y xgboost
可重复执行2次上述命令,确认没有残留版本。第二步:安装基础编译依赖
先确认已安装Xcode命令行工具,未安装的话执行:xcode-select --install
等待弹窗提示安装完成即可。第三步:安装适配M1架构的稳定版XGBoost
优先使用conda-forge的预编译适配包,稳定性最高,确认你的conda为M1适配的arm64版本后执行:conda install -c conda-forge xgboost==1.7.6
1.7.6是目前对M1系列适配最成熟的版本,不建议安装2.x以上版本,兼容性问题较多。第四步:验证安装结果
打开Python终端执行以下代码,无报错即为修复成功:from xgboost import XGBClassifier clf = XGBClassifier() print("XGBoost加载正常")
备用方案(无conda环境时使用):
先通过homebrew安装底层适配M1的XGBoost库:brew install xgboost
再安装对应版本的Python绑定:pip install xgboost==1.7.6
安装完成后按上述第四步验证即可。
内容的提问来源于stack exchange,提问作者Miha Chestneyshin

