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

如何将带外部目录的Flask应用部署至Azure?

Azure部署:打包app与shared_libs并指定启动程序

方案1:调整打包结构+简化导入路径

  • 打包操作:在root目录下执行命令,直接将app和shared_libs打包到ZIP根目录:
    zip -r deploy.zip app/ shared_libs/
    
  • 修改flask_app.py的导入代码:去掉sys.path.append('..'),此时shared_libs与app处于同级目录,Python可直接识别:
    import os
    from shared_libs.lib import ExampleLib
    
  • Azure配置:在应用设置的启动命令中指定运行程序,原生Python启动示例:
    python app/flask_app.py
    
    生产环境推荐用WSGI服务器:
    gunicorn --bind=0.0.0.0 --workers=4 app.flask_app:app
    

方案2:保留原有导入逻辑,用启动脚本中转

  • 打包操作:同方案1打包app和shared_libs到ZIP根目录,同时在ZIP根目录新增start.py启动脚本:
    import sys
    import os
    
    # 将ZIP根目录加入Python路径
    sys.path.append(os.path.dirname(os.path.abspath(__file__)))
    # 导入并启动Flask应用
    from app.flask_app import app
    
    if __name__ == "__main__":
        app.run(host="0.0.0.0", port=int(os.environ.get("PORT", 5000)))
    
  • Azure配置:启动命令设置为:
    python start.py
    
    此方案无需修改原flask_app.py代码,适合不想改动业务逻辑的场景。

方案3:通过Azure环境变量配置Python路径

  • 打包操作:同方案1直接打包app和shared_libs。
  • 修改flask_app.py的路径配置:将固定路径改为读取环境变量:
    import sys
    import os
    # 读取Azure设置的PYTHONPATH,默认用当前目录兜底
    sys.path.append(os.environ.get('PYTHONPATH', '.'))
    from shared_libs.lib import ExampleLib
    
  • Azure配置:在应用设置中添加应用程序设置:
    • 名称:PYTHONPATH
    • 值:Linux环境填/home/site/wwwroot,Windows环境填D:\home\site\wwwroot
      启动命令仍用python app/flask_app.py或WSGI命令即可。

额外注意事项

  • 若requirements.txt在app目录下,Azure默认优先查找根目录的依赖文件,可将requirements.txt移到ZIP根目录,或在启动命令中指定依赖路径:
    pip install -r app/requirements.txt && python app/flask_app.py
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 23:47:04