You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

从GitHub安装Python软件时出现NumPy及编译错误,求助解决

解决Python包安装时的NumPy警告与PyThreadState编译错误

看起来你在安装关联scikit-learn的Python包时遇到了编译阻碍,结合你的Python3.7+Anaconda环境,我来拆解问题并给出针对性修复方案:

问题根源

  1. NumPy废弃API警告:这只是提示性信息,不会中断安装,但说明包内代码使用了旧版NumPy API;真正导致安装失败的是后面的编译错误。
  2. PyThreadState成员不匹配错误:报错提示exc_type/exc_value不存在,建议改用curexc_type/curexc_value——这是因为Python3.8+对CPython内部API做了修改,而你要安装的包(或其依赖的Cython生成代码)是基于更高版本Python API编写的,和你的Python3.7环境不兼容。

修复方案

方案1:安装与Python3.7兼容的包版本

从错误里的sklearn/svm/libsvm.c可以判断你在安装scikit-learn或依赖它的包,Python3.7最高支持到scikit-learn==1.0.2(1.1及以上版本仅支持Python3.8+)。你可以指定版本安装:

pip install scikit-learn==1.0.2

如果是从GitHub安装自定义包,请确认源码的分支/tag是否支持Python3.7,或联系开发者获取兼容版本。

方案2:降级Cython到兼容版本

新版Cython会生成适配Python3.8+的代码,导致在Python3.7环境编译失败。你可以降级到支持Python3.7的Cython版本:

pip install Cython==0.29.36

降级完成后,重新执行你的包安装命令即可。

方案3:消除NumPy废弃API警告(可选)

如果想去掉那个警告,可以在安装前设置环境变量,强制禁用旧API:

export CFLAGS="-DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION"

再执行安装命令,警告就会消失。

额外检查

  • 确认你的conda环境确实是Python3.7,避免版本混用:
python --version
  • 如果你是源码编译安装,先清理之前的编译缓存(比如删除build目录)再重新编译。

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

火山引擎 最新活动