HPC上与其他用户共享conda环境
本文以 CMA 新一代超算平台国家级子系统 (以下简称 HPC2023) 为例说明如何在 HPC 上与其他用户共享 conda 环境。
HPC2023 安装了 conda 软件包 conda/2023.03.01。 下面以 op_post 账户使用 wangdp 账户创建的 py311-data 环境为例说明如何在不同账户之间共享 conda 环境。
1. 在 wangdp 账户中查看已经创建的 conda 环境
以下代码在 BShell 中加载并激活 conda 环境:
module load conda/2023.03.01
eval "$(/g1/app/apps/anaconda/2023.03.01/condabin/conda shell.bash hook)"
查看已经创建的 conda 环境:
conda env list
# conda environments:
#
base * /g1/app/apps/anaconda/2023.03.01
py311-cylc /g1/u/wangdp/.conda/envs/py311-cylc
py311-data /g1/u/wangdp/.conda/envs/py311-data
py311-data-oper /g1/u/wangdp/.conda/envs/py311-data-oper
py311-takler /g1/u/wangdp/.conda/envs/py311-takler
py312-ansible /g1/u/wangdp/.conda/envs/py312-ansible
py312-data /g1/u/wangdp/.conda/envs/py312-data
py39-cylc /g1/u/wangdp/.conda/envs/py39-cylc
默认环境安装在系统目录,用户 (wangdp) 创建的环境放在 /g1/u/wangdp/.conda/envs
目录中。
2. 在 op_post 账户中使用 wangdp 创建的 conda 环境
切换到 op_post 账户,激活 conda 环境,并查看已经创建的 conda 环境:
# conda environments:
#
base * /g1/app/apps/anaconda/2023.03.01
py311-oper /g1/u/op_post/.conda/envs/py311-oper
py311-oper-graph /g1/u/op_post/.conda/envs/py311-oper-graph
可以看到,op_post 创建的环境放在 /g1/u/op_post/.conda/envs
目录中。
op_post 不能直接找到 wangdp 账户创建的 conda 环境。
可以通过将 wangdp 账户的 envs 目录添加到配置项 envs_dirs
中实现环境共享。
执行如下命令,将在配置文件 ~/.condarc
中更新配置项 envs_dirs
:
conda config --add envs_dirs /g1/u/wangdp/.conda/envs
查看 ~/.condarc
文件,可以看到 envs_dirs
的配置项。
也可以直接修改文件而不执行上述命令。
# ...skip...
envs_dirs:
- /g1/u/wangdp/.conda/envs
再次查看 op_post 账户的 conda 环境:
# conda environments:
#
base * /g1/app/apps/anaconda/2023.03.01
py311-oper /g1/u/op_post/.conda/envs/py311-oper
py311-oper-graph /g1/u/op_post/.conda/envs/py311-oper-graph
py311-cylc /g1/u/wangdp/.conda/envs/py311-cylc
py311-data /g1/u/wangdp/.conda/envs/py311-data
py311-data-oper /g1/u/wangdp/.conda/envs/py311-data-oper
py311-takler /g1/u/wangdp/.conda/envs/py311-takler
py312-ansible /g1/u/wangdp/.conda/envs/py312-ansible
py312-data /g1/u/wangdp/.conda/envs/py312-data
py39-cylc /g1/u/wangdp/.conda/envs/py39-cylc
sokort-test /g1/u/wangdp/.conda/envs/sokort-test
可以看到,配置后的 op_post 账户能够识别 wangdp 账户创建的 conda 环境。
激活环境,并查看 python 程序的目录,可以看到能够正确调用 py311-data 环境下的 python 命令。
conda activate py311-data
which python
/g1/u/wangdp/.conda/envs/py311-data/bin/python
注意:需要开放相关目录的访问和执行权限才能向其他用户共享 conda 环境。
上述方法需要修改 .condarc
配置文件,修改永久生效,可以作为临时方案。
笔者将继续寻找更合适的 conda 环境共享方案。