Flask应用加载static文件夹内Keras模型失败问题求助
解决Flask中加载static文件夹内Keras模型的文件找不到问题
核心问题原因
你直接用/static/model/model.keras这种绝对路径,指向的是系统根目录下的static文件夹,而非Flask项目目录内的static文件夹,这才导致文件找不到。另外,自定义静态路由是给前端HTTP请求用的,后端加载本地模型不能通过路由访问,必须直接读取文件系统路径。
正确解决方案
方法1:用Flask应用根路径拼接(推荐)
利用Flask提供的root_path获取项目根目录,再拼接模型路径,避免路径分隔符和目录层级问题:
import os from flask import Flask, current_app from keras.models import load_model app = Flask(__name__) @app.route('/') def init(): # 拼接正确的模型路径 model_path = os.path.join(current_app.root_path, 'static', 'model', 'model.keras') model = load_model(model_path) return render_template('index.html')
方法2:启动时一次性加载模型(性能优化)
不要在每次请求时重复加载模型,建议在Flask启动时加载一次,提升性能:
import os from flask import Flask from keras.models import load_model app = Flask(__name__) # 全局变量存储模型 model = None @app.before_first_request def load_model_on_startup(): global model model_path = os.path.join(app.root_path, 'static', 'model', 'model.keras') model = load_model(model_path) @app.route('/') def init(): # 直接使用已加载的全局模型 return render_template('index.html')
额外提示
- 检查模型文件路径:确认
static/model/model.keras确实存在于你的Flask项目目录中,文件名和后缀(.keras)不要写错。 - 权限问题:确保运行Flask的用户对该模型文件有读取权限。
内容的提问来源于stack exchange,提问作者Christopher Body
相关产品推荐
相关产品推荐

