You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EMR v5.32.0 Bootstrap执行时Numpy旧版本无法卸载导致pandas导入失败

AWS EMR v5.32.0 多版本Numpy冲突解决方案

版本残留的核心原因是EMR预装的Numpy同时存在RPM安装包和pip安装包,且不同用户(root/emr-user)、不同Python版本的包路径独立,仅执行单轮pip卸载无法覆盖所有安装来源,可按以下步骤处理:

  • 第一步:优先卸载系统预装的RPM版本Numpy
    在Bootstrap脚本最开头添加如下命令,移除yum源安装的默认Numpy,这类包无法通过pip卸载:
    sudo yum remove -y python3-numpy python-numpy

  • 第二步:全路径清理pip安装的旧版本Numpy
    分别清理root用户和普通用户路径下的旧版本,指定Python3对应的pip工具避免操作到Python2的包:

    sudo pip3 uninstall -y numpy==1.16.*
    pip3 uninstall -y numpy==1.16.*
    # 多次执行确保所有旧版本被完全卸载
    sudo pip3 uninstall -y numpy
    pip3 uninstall -y numpy
    
  • 第三步:安装目标版本依赖
    清理完成后统一安装符合要求的Numpy和pandas版本:
    sudo pip3 install numpy==1.21.6 pandas>=1.0.0

  • 第四步:配置Python路径优先级,避免旧路径优先被读取
    在Bootstrap中添加全局环境变量配置,将pip第三方包路径放到系统默认路径之前:

    sudo sh -c "echo 'export PATH=/usr/local/bin:\$PATH' >> /etc/profile.d/custom-python.sh"
    sudo sh -c "echo 'export PYTHONPATH=/usr/local/lib/python3.7/site-packages:\$PYTHONPATH' >> /etc/profile.d/custom-python.sh"
    sudo chmod +x /etc/profile.d/custom-python.sh
    source /etc/profile.d/custom-python.sh
    
  • 第五步:适配PySpark场景(如果使用Spark任务)
    如果集群运行PySpark任务,需要在集群配置中指定统一的Python3路径,避免Executor节点读取到旧版本Numpy:

    spark.executorEnv.PYSPARK_PYTHON=/usr/bin/python3
    spark.yarn.appMasterEnv.PYSPARK_PYTHON=/usr/bin/python3
    
  • 第六步:添加验证步骤
    在Bootstrap脚本末尾添加验证逻辑,确保部署时就能检测到版本异常:
    python3 -c "import numpy; import pandas; print('Numpy版本:', numpy.__version__, 'Pandas版本:', pandas.__version__)"

注意:Bootstrap脚本默认以root身份执行,若需要为emr-user单独配置环境,所有非全局的pip操作需要切换到emr-user身份执行

内容的提问来源于stack exchange,提问作者Mihir Garg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:00:04