如何搭配TensorFlow使用Numpy1.19.5且不出现numpy.ndarray size changed报错
M1芯片运行Stable Baselines Numpy二进制不兼容解决方案
报错的根本原因是当前环境安装的h5py包编译时依赖的Numpy版本,高于你运行环境的Numpy 1.19.5,导致结构体大小不匹配,M1架构下预编译二进制包的适配差异会更容易触发这类问题,有3种可行的解决方案:
方案1:重新编译h5py匹配现有Numpy版本
无需修改TensorFlow和Numpy版本,直接基于本地已安装的Numpy 1.19.5重新编译安装h5py即可解决:
- 卸载现有h5py:
pip uninstall -y h5py - 禁用预编译包,从源码编译安装h5py:
pip install --no-binary=h5py h5py
方案2:使用M1适配的TensorFlow版本升级Numpy
M1芯片可安装苹果官方维护的tensorflow-macos,该版本支持Numpy 1.20及以上版本,你可以直接升级Numpy到修复版本,无依赖冲突:
- 卸载现有TensorFlow、Numpy、h5py:
pip uninstall -y tensorflow numpy h5py - 安装适配M1的TensorFlow和高版本Numpy:
pip install tensorflow-macos numpy>=1.20 h5py
方案3:降级h5py到兼容版本
安装编译时依赖Numpy 1.19.x的历史h5py版本即可,无需编译:pip install h5py==2.10.0
注意:尽量使用arm64架构的Python环境(如miniforge),避免使用Rosetta2转译的x86 Python环境,可减少这类二进制兼容问题。
内容的提问来源于stack exchange,提问作者Joe Nordling
相关产品推荐
相关产品推荐

