Zappa部署时如何指定依赖库版本 强制使用指定numpy版本
Zappa部署强制指定numpy版本解决方案
问题根因
Zappa打包时优先读取缓存的依赖包、或是自动拉取预编译的公共依赖包,同时如果存在其他子依赖隐式引入高版本numpy,都会导致你本地指定的版本不生效。
解决步骤
- 第一步:清理所有缓存文件
直接删除Zappa生成的本地打包缓存和临时目录,避免旧版本依赖残留:rm -rf zappa_packages/ .zappa/ - 第二步:确认本地虚拟环境依赖正确
执行命令验证当前虚拟环境的numpy版本:pip show numpy
若版本不是1.19.4,重新执行安装:pip uninstall -y numpy && pip install numpy==1.19.4 --only-binary :all:
这里加--only-binary :all:是为了拉取兼容Lambda运行环境的预编译二进制包,避免部署后出现兼容性问题。 - 第三步:锁死项目依赖版本
打开项目根目录的requirements.txt,确保写入明确的版本约束,禁止模糊匹配:numpy==1.19.4
执行pip check检查是否有其他依赖要求更高版本的numpy,若存在则给对应依赖锁死兼容1.19.4的版本号。 - 第四步:修改Zappa配置禁用自动拉取预编译包
打开zappa_settings.json,在你对应的部署阶段配置中新增参数:"use_precompiled_packages": false
这个参数会强制Zappa使用你本地虚拟环境的依赖打包,不会拉取官方预编译的高版本依赖包。 - 第五步:无缓存重新部署
部署时新增--no-cache参数跳过所有缓存构建,如果是首次部署执行:zappa deploy <你的部署阶段名称> --no-cache
如果是更新已存在的部署执行:zappa update <你的部署阶段名称> --no-cache
部署后验证
你可以在业务代码中临时加入调试逻辑,确认部署后的版本是否正确:
import numpy print(f"当前运行numpy版本:{numpy.__version__}")
触发请求后执行zappa tail查看日志,确认版本为1.19.4后即可删除调试代码。
内容的提问来源于stack exchange,提问作者ScottieB
相关产品推荐
相关产品推荐

