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

如何构建使用废弃NumPy API的PyPi包?以kmc2安装为例

解决K-Means 2编译时的NumPy废弃API警告

方案1:调整setup.py中的Extension宏定义

你之前尝试的define_macros参数方向正确,可能是写法细节问题。修改setup.py里的Extension配置,确保宏值以字符串传递(让C预处理器识别NPY_1_7_API_VERSION这个NumPy头文件宏):

import numpy as np
from setuptools import setup, Extension

module1 = Extension(
    'kmc2',
    sources=['kmc2.c'],
    extra_compile_args=['-O3'],
    define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")]
)
setup(
    install_requires=["numpy", "scipy", "scikit-learn", "nose"],
    ext_modules=[module1],
    include_dirs=[".", np.get_include()]
)

执行重新安装命令:

pip install . --force-reinstall

方案2:直接修改C源文件

如果方案1无效,直接在kmc2.c的最顶部(所有#include语句之前)添加宏定义:

#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION

这样编译时预处理器会直接启用该宏,屏蔽废弃API警告。

关于NumPy降级的说明

尝试安装NumPy 1.7出现legacy-install-error是因为旧版本不兼容现代Python版本(如3.8及以上),完全没必要降级。问题出在kmc2的编译配置,不需要修改NumPy内部的setup.py。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:17:21