通过VS Code部署Python EchoBot到Azure App Service时遇模块未找到错误
通过VS Code部署Python EchoBot到Azure App Service时遇模块未找到错误
我太懂这种明明做了基础配置却还是卡壳的感觉了!部署Bot Framework的Python Echo Bot到Azure App Service时,aiohttp依赖死活装不上,你已经加了requirements.txt和SCM构建开关,那咱们从几个关键方向来排查解决:
一、先把requirements.txt的细节盯死
首先确认你的requirements.txt里的aiohttp有没有拼写错误,绝对不能有空格或者大小写问题(比如写成AioHTTP就会炸)。如果没指定版本,建议加个兼容Linux环境的稳定版本号,比如:
aiohttp>=3.8.6 # 其他Bot Framework依赖也一起写上,比如: botbuilder-core>=4.21.0 botbuilder-schema>=4.21.0 botframework-connector>=4.21.0
这样能避免因为版本兼容问题导致pip安装失败。
二、自定义部署脚本(解决自动构建漏装的问题)
如果Azure的自动构建没触发pip install,那咱们手动写部署脚本强制安装。步骤很简单:
- 在项目根目录新建
.deployment文件,内容如下:
[config] command = bash deploy.sh
- 再新建
deploy.sh脚本,内容如下(记得替换启动文件为你的实际入口,比如app.py或者main.py):
#!/bin/bash # 把依赖安装到Azure指定的应用依赖目录 pip install -r requirements.txt --target=".python_packages/lib/site-packages" # 启动应用,gunicorn是Azure Linux默认的WSGI服务器 gunicorn --bind=0.0.0.0 --timeout 600 app:app
- 给deploy.sh加执行权限:在本地终端运行
chmod +x deploy.sh,然后再通过VS Code部署。
三、检查几个容易忽略的配置项
- Python版本一致性:去Azure门户的你的App Service -> 配置 -> 常规设置,看看Python版本是不是和你本地开发用的版本一致(比如本地3.9,Azure选3.11可能会有依赖不兼容)。
- SCM构建开关是否真生效:同样在应用设置里,确认
SCM_DO_BUILD_DURING_DEPLOYMENT的值确实是true,有时候保存配置时可能因为网络问题没同步成功,重新保存一次试试。 - 查看完整部署日志:在VS Code的Azure扩展里,找到你的App Service,右键选“查看日志流”或者“查看部署日志”,找有没有
pip install -r requirements.txt的步骤,如果有,看是不是有报错(比如网络问题拉取不到包,或者权限问题)。
四、最后试试强制清缓存重新部署
有时候Azure会缓存旧的部署环境,导致新依赖没装上。在VS Code里部署时,选择“部署到Web App”后,在弹出的选项里选“覆盖现有文件”,或者去Azure门户的App Service -> 部署中心 -> 高级选项,点“重置部署凭据”后再重新部署。
按照这些步骤来,应该能解决aiohttp依赖安装失败的问题,让你的Echo Bot正常跑起来!
备注:内容来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

