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

为什么文件实际存在时Python仍报FileNotFoundError: [Errno 2]错误?

报错原因

核心原因是相对路径的工作执行上下文不一致:

  • 直接在chatbot_predict.py所在的OurModel目录下执行python chatbot_predict.py时,Python的当前工作目录就是OurModel,相对路径model.sav可以匹配到同目录下的模型文件,所以运行正常。
  • 执行python manage.py runserver启动Django服务时,当前工作目录是manage.py所在的server根目录,代码中的相对路径model.sav会被解析为server/model.sav,但你的模型文件实际存放在server/chat/DistilBertModel/OurModel/路径下,路径不匹配就会触发FileNotFoundError。
修复方案

推荐使用动态拼接绝对路径的方式解决,不会受执行目录影响,修改chatbot_predict.py的模型加载逻辑即可:

import joblib
import os

# 先获取当前chatbot_predict.py文件的所在目录绝对路径
current_file_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接得到model.sav的完整绝对路径
model_full_path = os.path.join(current_file_dir, 'model.sav')
loaded_model = joblib.load(model_full_path)

def get_prediction(message, loaded_model=loaded_model):
    # 原有预测逻辑保留
    return prediction

也可以根据项目需求选择其他方案:

  • 将模型文件的全路径配置到Django的settings.py中,加载时从配置项读取,更适合多环境部署场景
  • 直接把model.sav复制到server根目录下,无需修改代码但耦合度高,不推荐长期使用

内容的提问来源于stack exchange,提问作者M.Sajid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:36:03