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

如何部署位于子文件夹中的Python Flask应用到Azure Web App

解决Azure Linux Web App部署子文件夹中Flask应用的问题

错误原因

你使用的project=BackEnd是**.NET项目专属的配置项**,Oryx部署工具识别到这个参数后会优先尝试检测.NET项目,完全忽略了Python项目的检测逻辑,因此才会抛出"Could not find the .NET Core project file"的错误。

解决方案

方案1:修正.deployment配置(推荐)

移除.NET专属的project参数,改用Oryx针对Python项目的配置项,指定应用根目录:

修改.deployment文件内容为:

[config]
SCM_DO_BUILD_DURING_DEPLOYMENT=true
# 指定Python应用所在的子文件夹
SCM_BUILD_ARGS = --app-path BackEnd

方案2:调整文件结构+配置启动命令

  1. 将根目录的requirements.txt移动到BackEnd文件夹内,让Oryx能直接在目标目录检测到Python项目
  2. 在Azure门户的Web App 配置 -> 常规设置中,设置启动命令:
    # 生产环境推荐用gunicorn
    gunicorn --bind=0.0.0.0 --timeout 600 app:app
    # 测试环境可临时用Flask自带服务器
    # python app.py
    
  3. 简化.deployment文件:
    [config]
    SCM_DO_BUILD_DURING_DEPLOYMENT=true
    

方案3:通过环境变量强制指定Python运行时

在Azure门户的Web App 配置 -> 应用程序设置中添加以下环境变量:

  • PYTHONPATH = /home/site/wwwroot/BackEnd
  • WEBSITE_WEBAPP_COMMAND_LINE = gunicorn app:app

额外:React静态文件访问配置

确保Flask能正确返回BackEnd/static下的React构建文件,在BackEnd/app.py中添加路由配置:

from flask import Flask, send_from_directory
import os

app = Flask(__name__, static_folder='static', static_url_path='')

# 处理React SPA的路由 fallback
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def serve_react(path):
    if path != "" and os.path.exists(os.path.join(app.static_folder, path)):
        return send_from_directory(app.static_folder, path)
    return send_from_directory(app.static_folder, 'index.html')

# 保留原有的Flask接口路由
@app.route('/api/hello')
def hello():
    return "Hello from Flask!"

if __name__ == '__main__':
    app.run()

验证部署

提交所有变更后执行推送命令:

git push azure master

查看部署日志,确认Oryx正确检测到Python项目,不再出现.NET相关错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:31:27