|
本帖最后由 丁越 于 2024-12-28 16:19 编辑
Lmod管理公用Anaconda的方法
一、前言 Anaconda是一个开源的python包管理器,里面集成了众多的科学计算所需要的包,比如numpy, scipy, Pandas等等, 并且具有非常方便的包管理功能,可以方便地安装、更新、卸载Python包及其依赖项。此外, 它的软件环境管理功能也非常强大,能够方便创建多个独立的Python环境,使得每个环境有自己特定的包版本,避免不同项目之间的冲突。对于个人用户来说,通过执行Anaconda的后缀为.sh的安装脚本后就能直接将其安装到家目录下,并且自动将初始化命令写入到个人账户的.bashrc中。然而对于集群用户来说,个人用户的安装方式无法实现软件的公用,因此为了实现Anaconda的多人公用就需要将其安装在公共目录当中,并且需要为模块管理软件如Lmod配置相应模块文件来方便集群用户调用该软件。Lmod的模块文件采用lua语言编写,但同时也持支TCL语言。由于Lmod的灵活性、模块文件简单加上其丰富的手册文档支持,使得其在高性能计算领域非常流行。下面介绍一下如何在集群上安装并配置公用的Anaconda,并使用Lmod进行方便调用,本文中所使用的Linux系统为Rocky linux-9.5。
二、安装流程
1. 对于Rocky-linux用户来说,直接通过dnf install Lmod就可以非常方便安装Lmod。其他Linux用户需要按照实际情况安装Lmod。
2. 将Anaconda安装到公共目录里,比如/opt。 可以进入/opt目录后输入下面命令下载安装脚本,然后chmod +x Anaconda3-2024.10-1-Linux-x86_64.sh添加可执行权限,之后运行./Anaconda3-2024.10-1-Linux-x86_64.sh进入安装,注意当前默认的安装目录为/root/anaconda3,需要切换为/opt/anaconda3。安装最后询问你需不需要执行初始化,这里选择no。
- curl -o Anaconda3-2024.10-1-Linux-x86_64.sh https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh
复制代码 3. 在/ect/modulefiles里新建一个anaconda3的目录,里面根据conda的版本(如这里为24.9.2,可通过conda --version查看conda版本)新建一个名为24.9.2.lua的Anacond配置文件,因为配置这些文件时我们习惯上使用“程序名/版本”这样的方式来区分不同程序,以及相同程序但不同版本的模块文件。
- whatis("Anaconda3 24.9.2 & Python 3.9.21")
- local base = pathJoin("/opt", myModuleName())
- setenv("ANACONDA_ROOT",base)
- prepend_path("PATH",pathJoin(base,"bin"))
- -- this happens at load
- execute{cmd="source " .. base .. "/etc/profile.d/conda."..myShellType(),modeA={"load"}}
- execute{cmd="conda activate base",modeA={"load"}}
- -- this happens at unload
- if (myShellType() == "csh") then
- -- csh sets these environment variables and an alias for conda
- cmd = "unsetenv CONDA_EXE; unsetenv _CONDA_ROOT; unsetenv _CONDA_EXE; " ..
- "unsetenv CONDA_SHLVL; unalias conda"
- execute{cmd="conda deactivate",modeA={"unload"}}
- execute{cmd=cmd, modeA={"unload"}}
- end
- if (myShellType() == "sh") then
- -- bash sets environment variables, shell functions and path to condabin
- if (mode() == "unload") then
- remove_path("PATH", pathJoin(base,"condabin"))
- end
- cmd = "unset CONDA_EXE; unset _CE_CONDA; unset _CE_M; " ..
- "unset -f __conda_activate; unset -f __conda_reactivate; " ..
- "unset -f __conda_hashr; unset CONDA_SHLVL; unset _CONDA_EXE; " ..
- "unset _CONDA_ROOT; unset -f conda"
- execute{cmd="conda deactivate",modeA={"unload"}}
- execute{cmd=cmd, modeA={"unload"}}
- end
- family("python")
复制代码 在该文件中,我们仅需要修改第三行“local base = pathJoin("/opt", myModuleName())”中的“/opt”为自己的Anaconda所安装的位置。另外,当前文件中使用了“execute{cmd="conda activate base",modeA={"load"}}”,这也就是说当我们用module load anaconda3调用Anaconda时,将会自动进入base环境。假如在调用anaconda3时想直接进入其他环境,那么只需要将这里的base替换为其他的环境即可。如果不想自动进入base则直接把该行删除就行。
当运行module unload anaconda3命令时,这里还额外使用了“execute{cmd="conda deactivate",modeA={"unload"}}”,使得Anaconda先退出当前环境(如base)之后再取消其环境变量定义。注意的一点,当module unload anaconda3时假如当前的环境不是base,而是通过比如conda activate ase进入了名为ase的环境,那么首先需要自己手动执行conda deactivate来退回到base,然后再执行module unload anaconda3,这样才能完全退出anaconda3.
|
评分 Rate
-
查看全部评分 View all ratings
|