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

安装numpy 1.18.1编译失败报错,求解决方案

解决numpy 1.18.1编译错误(_Py_HashDouble参数不兼容问题)

方案1:匹配兼容的Python版本

numpy 1.18.1仅支持Python 2.7、3.5-3.8版本,如果你用的是Python3.9及以上,就会因为Python底层API(_Py_HashDouble)变更出现编译错误。

  • 用pyenv管理多版本Python(推荐):
    # 安装pyenv
    curl https://pyenv.run | bash
    # 安装Python3.8.x的稳定版(比如3.8.18)
    pyenv install 3.8.18
    # 切换当前目录到该Python版本
    pyenv local 3.8.18
    # 重新安装numpy
    python3 -m pip install numpy==1.18.1
    

方案2:用预编译wheel跳过编译

不想换Python版本的话,先降级pip和setuptools到适配旧版numpy的版本,再强制使用wheel安装:

# 降级pip和setuptools
python3 -m pip install pip==20.2.4 setuptools==44.0.0
# 强制使用预编译wheel安装numpy
python3 -m pip install numpy==1.18.1 --only-binary :all:

如果上述命令失败,说明没有对应Python版本的官方wheel,还是得回到方案1。

方案3:手动修改源码适配高Python版本(应急用)

必须在高Python版本安装的话,修改numpy源码里的_Py_HashDouble调用:

  1. 下载numpy1.18.1源码包:
    python3 -m pip download numpy==1.18.1 --no-binary :all:
    
  2. 解压下载的tar.gz包,找到numpy/core/src/npymath/npy_math.c.src文件,把里面的_Py_HashDouble调用修正:

    比如原代码是return _Py_HashDouble(d);,如果参数类型不兼容,改成return _Py_HashDouble((double)d);;如果是参数数量问题,确保只传一个double类型参数。

  3. 进入解压后的目录,执行本地安装:
    python3 setup.py install
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 06:17:05