Azure Linux Web App压缩部署后启动提示aiohttp模块不存在如何解决
问题根因
日志中的两条警告已经明确问题核心:
WARNING: Could not find virtual environment directory /home/site/wwwroot/antenv. WARNING: Could not find package directory /home/site/wwwroot/__oryx_packages__.
这说明Zip部署过程中Oryx构建环节没有正常执行依赖安装流程,requirements.txt中的依赖没有被安装到运行环境中。
排查步骤
- 首先确认Zip包的根目录是否直接包含requirements.txt:很多人打包时会把代码放到外层文件夹里,导致Oryx无法识别到根目录的requirements.txt,不会触发依赖安装。比如压缩包解压后是
myapp/requirements.txt而非直接requirements.txt,就会出现这个问题。 - 检查应用配置是否关闭了构建功能:Azure Web App默认Zip部署时会开启构建,但如果之前配置过
SCM_DO_BUILD_DURING_DEPLOYMENT为false,就会跳过依赖安装环节。 - 确认linux_fx_version配置是否生效:如果配置没有正确保存,运行环境和本地开发环境版本不一致也可能导致依赖安装失败,你已经尝试过更换Python版本可以先排除这个可能。
修复方案
- 调整打包逻辑
打包时直接选中所有代码文件(包括requirements.txt、app.py)再压缩,不要外层嵌套文件夹。比如你本地代码都在project文件夹下,就进入project文件夹,全选所有文件后打包,不要直接压缩project文件夹。 - 强制开启部署时构建
执行az命令配置应用环境变量,开启部署自动构建:
az webapp config appsettings set --name <你的应用名> --resource-group <你的资源组名> --settings SCM_DO_BUILD_DURING_DEPLOYMENT=true
配置完成后重新执行Zip部署命令即可。
3. 可选:手动指定启动逻辑
如果上述方法都不生效,可以直接在应用配置的启动命令里添加依赖安装步骤,启动命令设置为:
python -m pip install -r /home/site/wwwroot/requirements.txt && gunicorn --bind=0.0.0.0 --timeout 600 app:app
内容的提问来源于stack exchange,提问作者Jayendran
相关产品推荐
相关产品推荐

