|
|
最近拜读@Uus/pMeC6H4-/キ 老师的《私用小电脑WSL2装RockyLinux10虚拟机,及LMod管理OpenMPI-4.1.8, ORCA-6.1.1等的笔记》
里面提及了conda相关的环境变量管理,但似乎反激活机制仍有欠缺,在实际使用时,即使取消了conda的激活,也依然可能会有一部分conda的环境残留。
这可能会导致预期外的软件版本、报错的出现,一个例子就是可能会因为LD_LIBRARY_PATH的污染导致OpenSSL version mismatch而使ssh相关的功能失效。
这里共享出目前的用于生产环境中对conda环境管理的module文件,已经尽力避免了环境变量残留,如您发现有缺陷,还请多指教。
这个是lmod用的lua文件:
- -- -*- lua -*-
- local conda_root = "/opt/devtools/anaconda3"
- local env_script = "/opt/envs/anaconda3.env"
- source_sh("bash", env_script)
- prepend_path("PATH", conda_root .. "/bin")
- prepend_path("PATH", conda_root .. "/condabin")
- if (mode() == "remove") then
- local cleanup_list = {
- "CONDA_EXE", "CONDA_PYTHON_EXE", "CONDA_SHLVL", "CONDA_PREFIX",
- "CONDA_DEFAULT_ENV", "CONDA_PROMPT_MODIFIER", "CONDA_PREFIX_1",
- "_CE_M", "_CE_CONDA"
- }
- for _, var in ipairs(cleanup_list) do
- unsetenv(var)
- end
- LmodMessage("Cleaning up Conda environment...")
- execute{cmd="export PATH=$(echo $PATH | tr ':' '\\n' | grep -v -E 'anaconda3/bin|anaconda3/condabin|/.conda/envs/' | paste -sd ':' -)", modeA={"remove"}}
- execute{cmd="while [ ${CONDA_SHLVL:-0} -gt 0 ]; do conda deactivate; done; unset -f conda __conda_activate __conda_reactivate; hash -r", modeA={"remove"}}
- end
复制代码 这个是给module用的tcl文件:
- #%Module1.0
- conflict conda
- set conda_root "/opt/devtools/anaconda3"
- set env_script "/opt/envs/anaconda3.env"
- if { [module-info mode load] } {
- if { [file exists $env_script] } {
- source-sh bash $env_script
- }
- prepend-path PATH "$conda_root/bin"
- prepend-path PATH "$conda_root/condabin"
- }
- if { [module-info mode remove] } {
- puts stdout "while \[ \${CONDA_SHLVL:-0} -gt 0 \]; do conda deactivate; done;"
- set cleanup_list {
- CONDA_EXE CONDA_PYTHON_EXE CONDA_SHLVL CONDA_PREFIX
- CONDA_DEFAULT_ENV CONDA_PROMPT_MODIFIER CONDA_PREFIX_1
- _CE_M _CE_CONDA __MODULES_SHARE_PATH
- }
- foreach var $cleanup_list {
- unsetenv $var
- puts stdout "unset $var;"
- }
- puts stdout "unset -f conda __conda_activate __conda_reactivate __conda_hashr __add_sys_prefix_to_path __conda_exe __conda_s_rc;"
- puts stdout "export PATH=\$(echo \$PATH | tr ':' '\\n' | grep -v -E '/.conda/envs/|/anaconda3/bin|/anaconda3/condabin' | paste -sd ':' -);"
- puts stdout "unalias conda 2>/dev/null; hash -r;"
- }
复制代码
|
评分 Rate
-
查看全部评分 View all ratings
|