通过 Spack 包在 Mac/Linux 上安装 ALPS
Spack 安装
如果您计划使用 ALPS 的并行版本或在超级计算环境中运行 ALPS,除了源码安装外,您也可以通过 Spack 包管理工具 进行安装。我们建议您查看 Spack 中的 ALPS 包详情 以及 Spack 文档。
Spack 能够自动确定 ALPS 的依赖项,并安装 ALPS 所需的正确版本。该安装也是针对每个用户在各自的主目录中进行的,因此不会影响同一计算机集群中的其他用户。
安装步骤
首先,需要从 GitHub 仓库克隆 Spack:
git clone --depth=2 https://github.com/spack/spack.git这将创建一个名为 spack 的目录。您可以根据您的 shell 类型加载相应的脚本。
对于 bash、zsh 和 sh 用户:
. spack/share/spack/setup-env.sh对于 csh 和 tcsh 用户:
source spack/share/spack/setup-env.csh接下来,Spack 需要找到您计算机中所有可用的编译器:
spack compiler find此命令将让 Spack 检测系统中所有可用的编译器,并在您主目录下的隐藏目录 .spack 中创建一个 packages.yaml 文件。您可以使用以下命令查看或编辑它:
spack config edit packages或者,您可以通过以下命令查看可用的编译器:
spack compilers所需的最低编译器版本为 gcc@10.5.0 和 clang@13.0.1。
我们可以查看一下 Spack 中 ALPS 的信息页面:
spack info alps它将显示 ALPS 的包依赖关系。所有相关包都将通过 Spack 的包管理系统自动安装。
最后,让我们安装 ALPS!
spack install alpsspack load alps在超算集群中通过 Spack 安装
如果需要在超算集群中安装ALPS,我们建议通过提交批处理作业在计算节点上安装,而不是在登录节点上执行上述命令。由于安装过程有时耗时较长,在登录节点上安装可能会影响集群的其他用户。
我们已在以下超算集群中成功安装过 ALPS:NCSA Delta(伊利诺伊)、PSC Bridges(匹兹堡)、Purdue Anvil、SDSC Expanse(圣地亚哥)、TACC Stampede3(德克萨斯)。请阅读相应集群的文档以了解如何提交批处理作业。
常见问题排查
提示 spack: command not found,或 Spack 只能在 spack 目录下使用
每次打开新的终端时,都需要使用 spack 目录的路径加载 Spack 的 shell 配置脚本:
. /path/to/spack/share/spack/setup-env.sh如需永久生效,请将上述命令添加到您的 shell 启动文件中(例如 ~/.zshrc 或 ~/.bashrc)。
选择 Spack 使用的 Python 解释器
Spack 会使用在 PATH 中找到的第一个 python3(或 python)。如需使用其他解释器,请设置环境变量 SPACK_PYTHON(Spack 不会读取 PYTHON 变量):
export SPACK_PYTHON=/path/to/python3
. spack/share/spack/setup-env.sh
spack python -c "import sys; print(sys.executable)"最后一条命令会显示 Spack 实际使用的 Python 解释器。
macOS 上出现 SSL: CERTIFICATE_VERIFY_FAILED
如果所有下载都失败,并出现如下错误:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate这很可能是因为 Spack 正在使用从 python.org 安装的 Python(位于 /Library/Frameworks/Python.framework/ 下)。该 Python 不使用 macOS 系统证书,因此需要为每个 Python 版本安装一次证书包:
"/Applications/Python 3.x/Install Certificates.command"请将 3.x 替换为您的 Python 版本(例如 3.14)。或者,您也可以让 Spack 使用 Apple 自带的系统 Python,它使用 macOS 的证书存储:
export SPACK_PYTHON=/usr/bin/python3出现 AttributeError: module 'os' has no attribute 'O_PATH'
os.O_PATH 仅在 Linux 上存在。2026 年 5 月的 Spack 开发版本无条件地使用了它(spack/spack#52334),该问题已在 spack/spack#52447 中修复。
- macOS: 更换 Python 解释器无法解决此错误。请将 Spack 更新到 v1.2.0 或更高版本(在
spack目录中运行git pull或git checkout v1.2.2)。 - Linux: 请更新您的 Spack(在
spack目录中运行git pull),或通过SPACK_PYTHON让 Spack 使用其他 Python 解释器(见上文)。
如果您的问题未在此列出,请在 GitHub 上搜索或提交 issue。