通过GitHub部署Streamlit至Azure Web App时Workflow指令未生效
解决GitHub Actions部署Streamlit到Azure Web App时pip升级/Wheel安装不生效的问题
问题原因分析
- 步骤隔离导致虚拟环境未复用:GitHub Actions中每个
run步骤都是独立的shell会话,你在“Create and start virtual environment”步骤中激活了虚拟环境,但后续的pip升级、wheel安装等步骤都是在系统全局Python环境中执行的,虚拟环境的激活状态不会跨步骤保留。 - 部署时Azure会重新安装依赖:你上传artifact时排除了
venv/目录,所以部署到Azure后,Web App会在服务器端重新执行pip install -r requirements.txt,build阶段的pip升级和wheel安装操作不会影响到服务器上的依赖安装过程。
解决方案
方案1:在同一个shell会话中完成所有依赖安装操作
将虚拟环境创建、激活、pip升级、wheel安装和依赖安装合并到一个run步骤中,确保所有操作都在虚拟环境内执行(虽虚拟环境不会被部署,但能保证build阶段依赖安装使用最新工具):
- name: Create venv and install dependencies run: | python -m venv venv source venv/bin/activate python -m pip install --upgrade pip pip install -U wheel setuptools pip install -r requirements.txt
方案2:强制Azure服务器端使用最新工具安装依赖
直接在requirements.txt开头指定pip、wheel和setuptools的最低版本,让Azure安装依赖时自动升级这些工具:
# requirements.txt 开头添加 pip>=23.0.1 wheel>=0.40.0 setuptools>=67.0.0 # 你的其他业务依赖 streamlit>=1.28.0 # ...
方案3:自定义Azure部署脚本
在项目根目录创建.deployment文件,指定部署时的执行命令,先升级工具再安装依赖:
[config] command = pip install --upgrade pip && pip install -U wheel setuptools && pip install -r requirements.txt
额外排查步骤
- 查看GitHub Actions日志:进入仓库Actions页面,找到对应工作流记录,检查“Upgrade pip”等步骤的输出,确认命令是否执行成功、pip版本是否升级。
- 核对Azure Python版本:登录Azure门户,进入Web App的“配置 > 常规设置”,确保Python版本与build阶段指定的
3.9一致,版本不匹配可能引发依赖异常。 - 检查Azure部署日志:在Web App的“部署中心”查看服务器端
pip install的执行日志,排查是否有报错信息。
内容的提问来源于stack exchange,提问作者Gaurav Hazra
相关产品推荐
相关产品推荐

