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

Azure App Service单仓子目录应用部署成功后启动失败求助

问题分析

从错误日志可以明确两个核心问题:

  1. 依赖未正确安装:ModuleNotFoundError: No module named 'uvicorn' 说明Azure Web App运行环境中缺少项目依赖包
  2. 虚拟环境不兼容:构建阶段创建的venv虚拟环境被排除在部署包外,且Azure Oryx默认寻找名为antenv的虚拟环境,导致无法识别本地构建的环境

结合mono repo(应用位于rest_api子目录)的结构,以下是针对性修复方案:


修复方案

方案一:让Azure自动构建并安装依赖(推荐)

利用Azure Web App的Oryx构建工具自动识别Python项目并安装依赖,同时调整部署包结构适配mono repo:

1. 修改GitHub Actions构建阶段的Artifact上传

将rest_api目录下的内容直接作为artifact根目录,确保部署后Azure的/home/site/wwwroot就是应用目录:

# 替换build阶段的Upload artifact步骤
- name: Upload artifact for deployment jobs
  uses: actions/upload-artifact@v3
  with:
    name: python-app
    path: rest_api/
    exclude: |
      venv/

2. 修改部署阶段的Artifact下载

将artifact直接下载到当前目录,保证部署包结构正确:

# 替换deploy阶段的Download artifact步骤
- name: Download artifact from build job
  uses: actions/download-artifact@v3
  with:
    name: python-app
    path: .

3. 启用Azure部署时构建

在部署步骤中添加环境变量,触发Oryx自动安装依赖:

- name: 'Deploy to Azure Web App'
  id: deploy-to-webapp
  uses: azure/webapps-deploy@v2
  with:
    app-name: ${{ env.AZURE_WEBAPP_NAME }}
    publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_A79D58476BA645D1BF1A6116201A6E5F }}
    package: .
  env:
    SCM_DO_BUILD_DURING_DEPLOYMENT: true
    PYTHONPATH: /home/site/wwwroot

方案二:预构建依赖包并随项目部署

如果不想依赖Azure的自动构建,可以在本地构建阶段将依赖安装到Oryx识别的目录:

1. 修改依赖安装命令

将依赖安装到__oryx_packages__目录(Oryx默认读取的依赖目录):

# 替换build阶段的Install dependencies步骤
- name: Install dependencies
  working-directory: rest_api    
  run: |
    pip install --upgrade pip
    pip install -r requirements/base.txt --target="./__oryx_packages__"

2. 上传包含依赖的Artifact

确保__oryx_packages__被包含在部署包中:

- name: Upload artifact for deployment jobs
  uses: actions/upload-artifact@v3
  with:
    name: python-app
    path: rest_api/
    exclude: |
      venv/

验证修复

部署完成后查看Azure Web App日志:

  • 不再出现ModuleNotFoundError
  • 无Could not find virtual environment directory警告
  • 应用正常启动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 20:44:55