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

Azure Web App自定义部署脚本中pip安装Flask依赖的问题

解决Azure自定义部署脚本中Flask依赖安装问题

问题背景

将Flask Web应用从本地Git仓库推送到Azure时,配置了.deployment文件指向scripts/deploy.sh脚本,脚本负责执行npm run build并复制构建产物到静态文件夹。但遇到以下问题:

  • 根目录放置的requirements.txt未触发自动pip install -r requirements.txt,推测自定义部署脚本覆盖了Azure默认构建逻辑
  • 在脚本中显式调用pip install时,报错scripts/deploy.sh: line 20: pip: command not found
  • 应用启动日志显示虚拟环境路径为/tmp/8dc4df81676606a/antenv/lib/python3.10/site-packages,但依赖(如dotenv)未被安装
  • 尝试将依赖改为python3-dotenv或设置SCM_DO_BUILD_DURING_DEPLOYMENT均未解决问题

核心原因

Azure部署Python应用时会创建独立虚拟环境(默认名为antenv),自定义部署脚本默认不会激活该环境,直接调用pip会找不到命令;同时,使用自定义脚本后,Azure的默认依赖安装流程会被跳过,必须手动在脚本中处理。

解决方案

在自定义deploy.sh脚本中,明确激活虚拟环境或直接调用虚拟环境内的pip路径来安装依赖。

方法1:激活虚拟环境后执行pip安装

修改scripts/deploy.sh,添加以下步骤:

# 切换到部署根目录(Azure提供的环境变量,指向仓库部署目录)
cd "$DEPLOYMENT_TARGET"

# 激活虚拟环境(antenv是Azure默认创建的虚拟环境名称)
if [ -f "./antenv/bin/activate" ]; then
    source ./antenv/bin/activate
fi

# 安装Python依赖
pip install -r requirements.txt

# 继续执行原有脚本逻辑(npm构建等)
npm run build
# ... 其他复制静态文件的命令

方法2:直接调用虚拟环境内的pip绝对路径

如果激活环境有问题,可直接指定虚拟环境中的pip路径:

cd "$DEPLOYMENT_TARGET"

# 定义虚拟环境的pip路径
VENV_PIP="./antenv/bin/pip"

# 检查路径是否存在,若不存在则尝试临时目录下的虚拟环境(适用于临时部署目录场景)
if [ ! -f "$VENV_PIP" ]; then
    VENV_PIP="/tmp/$(basename $DEPLOYMENT_TARGET)/antenv/bin/pip"
fi

# 执行依赖安装
$VENV_PIP install -r requirements.txt

# 原有脚本逻辑
npm run build
# ... 其他命令

验证要点

  1. 重新推送代码到Azure,查看部署日志,确认出现pip install的执行记录
  2. 应用启动后,检查日志是否不再出现ModuleNotFoundError

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 23:55:06