CentOS 7集群安装Spack失败:<unknown file>类型错误
问题解决:Spack编译器配置类型错误
错误原因
你遇到的[ordereddict(...)] is not of type 'object'错误,核心是Spack的编译器配置文件格式不符合要求——配置被写成了顶层列表,而Spack期望的是包含compilers键的字典结构。
修复步骤
1. 修正compilers.yaml格式
找到你的Spack配置目录(全局安装通常是/path/to/spack/etc/spack/linux/,用户级是~/.spack/linux/)下的compilers.yaml,确保结构如下:
compilers: - compiler: spec: gcc@=4.8.5 paths: cc: /bin/gcc cxx: /bin/g++ f77: /bin/gfortran fc: /bin/gfortran flags: {} operating_system: centos7 target: x86_64 modules: [] environment: {} extra_rpaths: []
关键是顶层必须是compilers:键,对应一个编译器列表,不能直接把编译器字典放在顶层列表里。
2. 重新检测编译器(可选)
如果之前手动修改过配置,先删除现有compilers.yaml,再执行:
spack compiler find
生成的配置会自动符合格式要求,之后再运行spack spec zlib验证。
3. 匹配Spack与编译器版本兼容性
CentOS7自带的gcc 4.8.5版本较老,建议使用Spack v0.20.x及之前的稳定版本(新版Spack对旧编译器的兼容性可能下降),避免使用最新开发分支。
内容的提问来源于stack exchange,提问作者Thomas Marcus
相关产品推荐
相关产品推荐

