Azure部署echo-bot.py遇ModuleNotFoundError:找不到aiohttp模块
解决Azure Echo Bot部署时ModuleNotFoundError: No module named 'aiohttp'的问题
以下是针对性的解决方案,按顺序尝试:
1. 确认压缩包结构正确
确保requirements.txt在echo-bot.zip的根目录,和app.py、.deployment等文件同级。如果requirements.txt在子文件夹中,Oryx构建工具会无法识别,导致依赖未安装。
你可以本地解压echo-bot.zip,检查文件层级是否符合要求。
2. 清除Azure上的构建缓存,强制重新构建
部署缓存可能导致依赖未更新,按以下步骤操作:
- 登录Azure门户,进入目标Web App,打开高级工具(Kudu),选择Debug console > Bash。
- 执行以下命令删除旧的虚拟环境和构建 manifest:
rm -rf /home/site/wwwroot/antenv rm /home/site/wwwroot/oryx-manifest.toml - 重新运行你的部署命令:
az webapp deployment source config-zip --resource-group "resource_name" --name "service_name" --src "echo-bot.zip"
3. 明确指定启动命令使用虚拟环境中的依赖
修改启动命令,确保使用虚拟环境内的gunicorn和依赖:
- 方法1:在Azure门户的Web App配置 > 常规设置中,将启动命令改为:
/home/site/wwwroot/antenv/bin/gunicorn --bind 0.0.0.0 --worker-class aiohttp.worker.GunicornWebWorker --timeout 600 app:APP - 方法2:修改
.deployment文件,添加启动命令配置:[config] SCM_DO_BUILD_DURING_DEPLOYMENT = true WEBSITE_STARTUP_COMMAND = /home/site/wwwroot/antenv/bin/gunicorn --bind 0.0.0.0 --worker-class aiohttp.worker.GunicornWebWorker --timeout 600 app:APP
4. 调整aiohttp版本,确保Python兼容性
日志显示使用Python 3.7.17,虽然aiohttp 3.6.3兼容Python 3.7,但可以尝试升级到同分支的最新兼容版本(如3.8.6),修改requirements.txt:
aiohttp==3.8.6
重新打包后再部署。
5. 检查构建日志定位问题
部署完成后,在Azure门户的Web App部署中心 > 日志中查看构建过程日志,搜索pip install关键字,确认aiohttp是否被成功安装。如果有安装失败的报错(如网络问题、依赖冲突),根据报错信息针对性处理。
内容的提问来源于stack exchange,提问作者João Abrantes
相关产品推荐
相关产品推荐

