如何将带外部目录的Flask应用部署至Azure?
方案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启动示例:
生产环境推荐用WSGI服务器:python app/flask_app.pygunicorn --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.pyflask_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
相关产品推荐
相关产品推荐

