Chaquopy加载XGBoost的JSON模型提示无此文件错误怎么解决?
加载失败原因
- 路径传参错误:你已经通过
join(dirname(__file__), "model.json")构造了指向脚本同目录模型文件的绝对路径,但调用model.load_model()时传入的是相对路径"model.json"。XGBoost的底层IO逻辑由C++实现,不会自动匹配Python脚本的存储目录,只会从安卓应用的默认工作目录查找文件,因此无法定位到模型文件。 - 模型文件未正确打包:如果
model.json没有和你的Python脚本放在同一目录下(安卓项目src/main/python的对应子目录),Chaquopy打包APK时不会自动包含该文件,运行时自然无法读取。
解决方法
- 修改加载路径参数,直接传入你构造好的绝对路径变量
filename,修改后的代码如下:
import xgboost as xgb from os.path import dirname, join from xgboost.sklearn import XGBClassifier def main (): filename = join(dirname(__file__), "model.json") model = XGBClassifier() # 传入完整绝对路径,不要使用相对路径 model.load_model(filename) return str(model)
- 确认模型文件存放位置:将
model.json和当前Python脚本放在同一个目录下,确保Chaquopy打包时会将该文件一同打入APK。 - 路径有效性验证(可选):如果修改后仍报错,可以在加载模型前增加文件读取测试代码,确认路径正确性:
with open(filename, "r", encoding="utf-8") as f: # 能正常读取打印内容说明路径配置正确 print("文件读取成功,长度:", len(f.read()))
补充:如果路径问题解决后出现格式类报错,确认你导出模型的XGBoost大版本和Chaquopy中安装的XGBoost版本保持一致,避免跨版本兼容性问题。
内容的提问来源于stack exchange,提问作者gggx
相关产品推荐
相关产品推荐

