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

启用WEBSITE_RUN_FROM_PACKAGE=1时Azure Python应用部署模块报错

问题分析与解决方案

核心冲突点

启用WEBSITE_RUN_FROM_PACKAGE = 1后,你同时配置了ENABLE_ORYX_BUILD = 1和SCM_DO_BUILD_DURING_DEPLOYMENT = 1,这三个设置存在本质冲突:

  • WEBSITE_RUN_FROM_PACKAGE让App Service从只读压缩包直接运行应用,不允许部署时写入任何文件
  • 后两个设置要求App Service在部署阶段执行Oryx构建(安装依赖、编译代码等),但只读包环境无法完成写入操作,导致依赖未被正确加载,引发模块找不到的错误

具体修复步骤

1. 移除冲突的应用设置

修改Terraform配置中的app_settings,删除ENABLE_ORYX_BUILD和SCM_DO_BUILD_DURING_DEPLOYMENT:

app_settings = {
  WEBSITE_RUN_FROM_PACKAGE = 1
  AZURE_STORAGE_CONNECTION_STRING = ".."
  OPENAI_API_KEY = "..."
  BACKEND_URL = "..."
  FRONTEND_HOST = ".."
  APPLICATION_INSIGHTS_CONNECTIONSTRING = ".."
  DEFAULT_MAX_CONTEXT_LEN = 1200
  DEFAULT_MAX_TOKENS = 200
  MAX_EMBEDDING_CHUNK_TOKENS = 200
}

2. 确保Python能识别依赖路径

你的构建步骤已将依赖安装到./.python_packages/lib/site-packages,需让Python运行时能找到这个目录。修改Terraform中的app_command_line,添加PYTHONPATH环境变量指定依赖路径:

app_command_line = "PYTHONPATH=./.python_packages/lib/site-packages gunicorn --preload --bind 0.0.0.0:8000 --workers=4 --timeout 600 app:app"

3. 验证打包内容完整性

确认ArchiveFiles任务正确包含.python_packages目录:

  • 检查生成的zip包,确保根目录下存在.python_packages文件夹,且内部包含所有安装的依赖模块
  • 若打包时遗漏该目录,调整ArchiveFiles的rootFolderOrFile或includeRootFolder参数,确保依赖目录被包含

4. 可选:改用虚拟环境打包(更稳定)

如果上述方法仍有问题,可调整构建流水线,将虚拟环境一起打包:
修改构建脚本:

python -m venv antenv
source antenv/bin/activate
python -m pip install --upgrade pip
pip install setup
pip install -r ./requirements.txt

然后修改启动命令(Terraform中):

app_command_line = "source antenv/bin/activate && gunicorn --preload --bind 0.0.0.0:8000 --workers=4 --timeout 600 app:app"

注意:打包时需确保antenv目录被包含在zip包中,Linux环境下脚本的可执行权限会被Azure DevOps的ArchiveFiles任务默认保留

验证效果

修改配置后重新部署:

  • 检查Kudu日志,确认模块导入错误消失
  • 部署时间应大幅缩短(跳过了部署阶段的Oryx构建,直接运行预打包的应用)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:52:24