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

PythonAnywhere部署Flask应用遇FileNotFoundError:模型文件存在仍报错

排查PythonAnywhere部署Flask垃圾邮件检测应用时的FileNotFoundError问题

问题背景

部署在PythonAnywhere的Flask垃圾邮件检测应用触发FileNotFoundError,报错指向spamdetector.py第8行加载spam_detector_model2.joblib模型文件的代码,但该文件确实存在于项目目录中;joblib及其他依赖包已确认安装完成。

排查步骤

  • 使用绝对路径加载模型
    PythonAnywhere的运行环境工作路径可能和本地开发环境不一致,避免使用相对路径。可以借助Flask提供的应用根路径拼接绝对路径,示例代码:
    from flask import current_app
    import joblib
    
    # 替换原加载代码为绝对路径写法
    model_file_path = f"{current_app.root_path}/spam_detector_model2.joblib"
    model = joblib.load(model_file_path)
    
  • 核对文件名大小写
    PythonAnywhere基于Linux系统,文件名区分大小写。检查代码中指定的文件名和实际文件的大小写是否完全匹配,比如Spam_Detector_Model2.joblib与spam_detector_model2.joblib会被系统判定为不同文件。
  • 确认文件实际位置
    登录PythonAnywhere控制台,进入项目根目录执行ls -l命令,查看文件列表,确保spam_detector_model2.joblib确实位于Flask应用的根目录下,而非子目录或其他路径。
  • 检查文件读取权限
    确保Web应用运行用户拥有模型文件的读取权限。执行ls -l spam_detector_model2.joblib查看权限配置,需保证权限位包含r(如-rw-r--r--)。若权限不足,执行chmod 644 spam_detector_model2.joblib调整权限。
  • 查看完整错误日志路径
    进入PythonAnywhere的Web应用管理页面,查看完整错误日志,确认报错提示的文件路径,对比实际文件的存储路径是否一致——相对路径可能因应用启动目录问题指向错误位置。

内容的提问来源于stack exchange,提问作者Ese Amadasun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:52:06