Jupyter Notebook环境下hmf库CAMB导入错误及依赖安装wheel构建失败问题
hmf导入CAMB报错的根因定位与解决方案
核心报错根因
- 出现
ImportError: cannot import name 'CAMB' from 'hmf.density_field.transfer_models'的本质原因是hmf版本迭代后的模块路径变更:hmf 3.0及以上版本已经将CAMB相关类的定义从hmf.density_field.transfer_models模块迁出,旧版本的导入路径无法检索到对应类,该问题与CAMB是否安装完成无直接关联 - 单独执行
pip install CAMB时在wheel构建环节报错,是因为PyPI源上最新版CAMB的要求与当前Python3.8环境不匹配:新版CAMB要求Python版本>=3.9,且需要本地配置gfortran编译环境,没有适配Python3.8的预编译包,会直接触发本地编译失败
分步落地解决方案
- 版本匹配降配安装:在当前conda环境中依次执行以下命令,安装完全兼容Python3.8的稳定版本组合
- 安装兼容旧导入路径的hmf稳定版:
pip install hmf==2.1.1 - 安装带预编译wheel包的适配版CAMB:
pip install camb==1.5.7(该版本无需本地编译Fortran代码,不会触发构建报错)
- 安装兼容旧导入路径的hmf稳定版:
- 导入路径适配校验:安装完成后在Jupyter Notebook中执行导入测试
- 执行
import hmf确认基础模块加载正常 - 执行
from hmf.density_field.transfer_models import CAMB确认无导入报错
- 执行
适配新版hmf的替代方案
如果不需要保留旧的导入逻辑,可在安装对应兼容版本CAMB的基础上,修改导入语句为from hmf.transfer_models import CAMB,即可在高版本hmf环境下正常调用CAMB相关功能
内容的提问来源于stack exchange,提问作者ccalculates
相关产品推荐
相关产品推荐

