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

Python FileNotFoundError求助:路径斜杠与文件定位问题

问题:Joblib加载模型时出现FileNotFoundError

错误信息

File "/usr/local/lib/python3.8/site-packages/joblib/numpy_pickle.py", line 650, in load with open(filename, 'rb') as f: FileNotFoundError: [Errno 2] No such file or directory: 'artifacts\\model_trainer\\model.joblib'

文件路径说明

  • 模型文件model.joblib绝对路径:
C:\Users\Dell\OneDrive\Desktop\Real_projects\End_to_end_ml_project_mlops\artifacts\model_trainer\model.joblib
  • 执行加载操作的prediction.py路径:
C:\Users\Dell\OneDrive\Desktop\Real_projects\End_to_end_ml_project_mlops\src\mlproject\pipeline\prediction.py

已尝试操作

  • 使用完整绝对路径加载模型:
self.model = joblib.load(Path("C:\Users\Dell\OneDrive\Desktop\Real_projects\End_to_end_ml_project_mlops\artifacts\model_trainer\model.joblib"))
  • 将路径中的反斜杠替换为正斜杠(/),问题仍未解决。

解决建议
  • 修正路径字符串格式:Windows路径中的反斜杠是转义字符,要么手动转义,要么使用原始字符串声明:
    # 转义反斜杠写法
    self.model = joblib.load(Path("C:\\Users\\Dell\\OneDrive\\Desktop\\Real_projects\\End_to_end_ml_project_mlops\\artifacts\\model_trainer\\model.joblib"))
    # 原始字符串写法(更简洁)
    self.model = joblib.load(Path(r"C:\Users\Dell\OneDrive\Desktop\Real_projects\End_to_end_ml_project_mlops\artifacts\model_trainer\model.joblib"))
    
  • 使用相对路径(推荐):基于prediction.py的位置动态构造路径,避免硬编码绝对路径的兼容性问题:
    from pathlib import Path
    
    # 从当前文件向上回溯到项目根目录
    project_root = Path(__file__).parents[3]
    model_path = project_root / "artifacts" / "model_trainer" / "model.joblib"
    self.model = joblib.load(model_path)
    
  • 验证路径有效性:加载前先打印路径并检查是否存在,排查拼写或同步问题:
    model_path = Path(r"C:\Users\Dell\OneDrive\Desktop\Real_projects\End_to_end_ml_project_mlops\artifacts\model_trainer\model.joblib")
    print(f"当前模型路径:{model_path}")
    print(f"路径是否存在:{model_path.exists()}")
    
    如果输出路径是否存在:False,检查文件夹名称拼写、OneDrive同步状态(确保文件已完全下载到本地)。

内容的提问来源于stack exchange,提问作者Satyam Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:42:42