使用Zappa部署Flask-Ask Alexa技能时遇KeyError问题求助
解决Zappa部署Flask-Ask Alexa技能时的
KeyError: pip._vendor.urllib3.contrib.问题 哎,这个坑我之前踩过!大概率是pip版本和Zappa的兼容性冲突搞的鬼,新版本pip的内部结构变了,Zappa还没跟上适配。给你几个亲测有效的解决办法,按顺序试就行:
1. 回退到兼容的pip和urllib3版本
过高的pip版本(比如21.x及以上)很容易触发这个错误,先把版本锁回稳定兼容的:
- 先卸载当前pip:
pip uninstall -y pip - 安装指定版本:
pip install pip==20.3.4 - 同步安装适配的urllib3:
pip install urllib3==1.26.6
2. 重建干净的虚拟环境
有时候虚拟环境里的依赖缓存会有残留,干脆重新搭一个:
- 退出当前虚拟环境,删掉旧环境:
rm -rf your_venv_name(Windows系统用rmdir /s your_venv_name) - 新建虚拟环境:
python -m venv your_venv_name - 激活环境:
source your_venv_name/bin/activate(Windows用your_venv_name\Scripts\activate) - 重新安装所有需要的依赖:
pip install flask-ask zappa(别忘了加上你项目里的其他依赖包)
3. 临时修改Zappa源码绕过错误
如果上面两步都没解决,直接改Zappa的源码来适配新的pip结构:
- 找到虚拟环境里Zappa的安装路径,比如
your_venv_name/lib/pythonX.X/site-packages/zappa/(X.X是你的Python版本) - 打开
utilities.py文件,找到调用pip._vendor.urllib3.contrib的代码块 - 把原来的导入替换成直接引用urllib3:
# 替换前的代码大概是这样: # from pip._vendor.urllib3.contrib import pyopenssl # 替换成: import urllib3.contrib.pyopenssl - 保存文件后,重新运行
zappa deploy dev
4. 检查AWS和Zappa配置
最后再确认一下你的AWS凭证配置正确,zappa_settings.json里的dev环境配置没有拼写错误(比如AWS区域、IAM角色权限这些),有时候配置问题也会触发奇怪的依赖报错。
总结一下,尽量别随便把pip更到最新版,Zappa对新工具链的适配总是慢一步,保持依赖版本稳定能少踩很多坑。
内容的提问来源于stack exchange,提问作者Vedant Shetty
相关产品推荐
相关产品推荐

