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

使用Flask部署机器学习模型时遭遇SystemExit: 1错误的技术求助

解决Flask部署机器学习模型时的SystemExit: 1错误

你遇到的SystemExit: 1问题核心原因是Spyder的IPython交互式环境与Flask Debug模式的自动重启机制冲突,同时代码里还有几个潜在问题,下面一步步帮你解决:

1. 修复Debug模式的核心冲突

Flask的debug=True会启用代码自动重载功能,但这个功能在Spyder的IPython环境下会触发退出信号(SystemExit),有两个可行的解决办法:

方法A:直接关闭Debug模式

把启动代码改成默认模式,避免自动重载触发的冲突:

if __name__ == '__main__':
    app.run()  # 默认debug=False,无自动重载,适合在Spyder中运行

方法B:保留Debug但禁用自动重载

如果需要Debug模式的错误提示功能,只需要关闭自动重载即可:

if __name__ == '__main__':
    app.run(debug=True, use_reloader=False)

2. 修复变量命名冲突

你代码里用Model作为加载后的模型变量名,但之前已经导入了from tensorflow.keras.models import Model,这会覆盖Keras的Model类,容易引发后续未知错误。建议重命名模型变量:

# 原代码
Model= load_model('F:/flask/modelssk.h5')
# 修改为
model = load_model('F:/flask/modelssk.h5')

同时对应的预测函数和调用处也要同步修改参数名:

def model_predict(img_path, model):
    img = image.load_img(img_path, target_size=(75,100,3))
    x = image.img_to_array(img)
    x = np.expand_dims(x, axis=0)
    preds = model.predict(x)
    return preds

# upload函数里的调用也要同步修改
preds = model_predict(file_path , model)

3. 确保uploads文件夹存在

你的代码会把上传的文件保存到uploads目录,但如果这个目录不存在会直接报错,建议在保存文件前先创建目录:

@app.route('/predict', methods=['GET', 'POST'])
def upload():
    if request.method == 'POST':
        f = request.files['file']
        basepath = os.path.dirname(__file__)
        upload_folder = os.path.join(basepath, 'uploads')
        # 如果uploads目录不存在则自动创建
        if not os.path.exists(upload_folder):
            os.makedirs(upload_folder)
        file_path = os.path.join(upload_folder, secure_filename(f.filename))
        f.save(file_path)
        # 后续预测逻辑...

4. 验证模型路径正确性

最后再确认F:/flask/modelssk.h5这个路径是绝对正确的,模型文件确实存在,避免因为找不到模型文件导致的启动失败。

按照上面的步骤修改后,应该就能正常启动Flask应用并进行模型预测了。

内容的提问来源于stack exchange,提问作者Ahmed Sabry Tamam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:17:32