Python3.7下HDBSCAN报错numpy.ndarray size changed问题求助
这个报错的核心是hdbscan预编译的二进制包依赖的numpy版本,和你当前运行环境中安装的numpy版本不匹配:hdbscan包含C扩展模块,编译时会绑定对应版本numpy的C头文件结构,若编译和运行时的numpy版本差异过大,就会出现ndarray内存大小不匹配的错误。
步骤1:彻底清理残留包与缓存
首先完全卸载当前环境中的numpy和hdbscan,清除pip缓存避免复用旧的编译文件:
pip uninstall -y numpy hdbscan pip cache purge
步骤2:安装适配Python3.7的numpy版本
Python3.7最高支持numpy 1.21.x版本,先安装固定版本的numpy,避免版本过高不兼容Python3.7:
pip install numpy==1.21.6
步骤3:基于当前环境的numpy编译安装hdbscan
必须在numpy安装完成后,再从源码编译安装hdbscan,让编译过程直接调用当前环境numpy的头文件,彻底解决二进制兼容问题:
pip install hdbscan==0.8.19 --no-binary hdbscan
步骤4:验证环境一致性
大部分场景下的安装无效问题,都是因为JupyterLab内核和终端pip对应的环境不一致,需要在你运行代码的Jupyter notebook中执行以下代码,确认版本匹配:
import numpy import hdbscan print(numpy.__version__) # 输出应为1.21.6 print(hdbscan.__version__) # 输出应为0.8.19
如果版本输出和安装的不一致,核对Jupyter内核对应的Python解释器路径,将包安装到对应环境中即可。
内容的提问来源于stack exchange,提问作者Philipp
相关产品推荐
相关产品推荐

