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

AWS EMR Zeppelin中numpy加载Python2.7低版本而非指定高版本如何解决

问题解决方案

这个问题的根因是Python模块搜索路径的优先级问题,旧版本numpy所在的目录在搜索顺序中排在你安装的1.18.5版本目录之前,因此Python会优先加载旧版本。你可以按照以下步骤解决:

  • 步骤1:确认当前加载路径和搜索顺序

    在Zeppelin的pyspark解释器中执行以下代码,确认旧版本numpy的位置和模块搜索优先级:

    import numpy
    # 输出当前加载的numpy文件路径,确认是不是Python2的目录
    print(numpy.__file__)
    import sys
    # 输出Python模块搜索路径的顺序
    print(sys.path)
    

    执行后可以看到1.14.5版本numpy的目录在1.18.5版本目录的前面。

  • 步骤2:修复引导脚本的安装参数

    你当前的引导脚本存在两个问题:

    1. 混用sudo和--user参数:带sudo使用--user时,包会安装到root用户的私有目录,普通运行用户(包括Zeppelin的运行用户)无法访问
    2. 存在拼写错误:sudp python3 -m pip install ipaddress==1.0.23中的sudp需要改为sudo

    你可以删除引导脚本中所有--user参数,并且给numpy的安装命令添加强制重装参数,修改后的对应语句为:

    sudo python3 -m pip install numpy==1.18.5 --force-reinstall
    

    修改完成后重新执行引导脚本即可。

  • 步骤3:临时验证方案(无需重跑引导脚本)

    如果需要快速验证效果,可以在Zeppelin代码的最开头插入以下代码,强制把高版本numpy的目录放到搜索路径最前面:

    import sys
    # 替换为你步骤1中查到的1.18.5版本numpy所在的site-packages目录路径
    sys.path.insert(0, "/usr/local/lib/python3.6/site-packages")
    import numpy
    print(numpy.__version__)
    
  • 步骤4:永久生效方案(无需修改引导脚本)

    你可以通过配置pth文件永久调整模块搜索路径优先级:

    # 把高版本numpy所在的目录路径写入pth文件,Python启动时会自动加载
    echo "/usr/local/lib/python3.6/site-packages" | sudo tee /usr/lib/python3.6/site-packages/custom_path.pth
    

    配置完成后重启Zeppelin的pyspark解释器即可生效。

  • 步骤5:最彻底方案(卸载旧版本)

    如果确认没有其他程序依赖旧版本numpy,可以直接卸载所有旧版本后重装指定版本:

    # 卸载Python3环境中所有版本的numpy
    sudo python3 -m pip uninstall numpy -y
    # 重新安装1.18.5版本
    sudo python3 -m pip install numpy==1.18.5
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:27:02