在AWS EMR上安装Great Expectations遇numpy版本兼容问题
解决AWS EMR上Great Expectations启动时的numpy版本兼容问题
问题分析
你遇到的ImportError是因为Great Expectations依赖的pandas版本要求numpy >=1.17.3,但EMR集群默认预装了numpy 1.16.5,且这个系统级的numpy没有被pip卸载操作完全替换——pip卸载的只是用户通过pip安装的numpy实例,系统自带的版本依然存在并被优先调用。
解决方案
修改你的bootstrap脚本,在安装Great Expectations之前强制升级numpy到符合要求的版本,具体步骤如下:
更新bootstrap脚本内容:
在安装great-expectations之前,先添加numpy的升级命令,并且使用--force-reinstall确保覆盖系统自带的旧版本:#!/bin/bash sudo yes | sudo yum install python3-devel sudo python3 -m pip install --upgrade pip sudo python3 -m pip install cython sudo python3 -m pip install boto3==1.26.37 # 强制升级numpy到兼容版本 sudo python3 -m pip install --force-reinstall numpy==1.21.6 sudo python3 -m pip install great-expectations==0.15.36选择
numpy==1.21.6是因为它既满足pandas对numpy >=1.17.3的要求,也能和Great Expectations 0.15.36稳定兼容。验证版本(可选):
可以在bootstrap脚本末尾添加验证命令,确保numpy版本正确:sudo python3 -c "import numpy; print('numpy版本:', numpy.__version__)"
为什么之前的卸载命令没用?
EMR集群中,numpy可能是通过yum预装的系统级包,仅用pip uninstall无法移除系统自带的版本。使用pip install --force-reinstall会强制将指定版本的numpy安装到Python的site-packages目录,覆盖系统默认版本的引用路径,从而解决版本冲突问题。
内容的提问来源于stack exchange,提问作者Liu Piu
相关产品推荐
相关产品推荐

