当前位置: 首页 > news >正文

在集群作业中激活 conda 环境

在 slurm 集群上提交一个任务, 如果直接激活 conda 环境, 往往会报错:

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'. To initialize your shell, run $ conda init <SHELL_NAME> Currently supported shells are: - bash - fish - tcsh - xonsh - zsh - powershell See 'conda init --help' for more information and options. IMPORTANT: You may need to close and restart your shell after running 'conda init'.

这是因为 conda initialize 的命令位于家目录下的 .bashrc, 在你登陆 shell 时执行; 而集群的作业系统在调用 /usr/bin/bash 运行你的作业时, 不会运行 ~/.bashrc .
因此, 可以直接把 ~/.bashrc 中的这部分代码提取出来, 仅在任务开始运行时执行一次, 比如, 放到 ~/.conda_init 中:

# >>> conda initialize >>>declareCONDA_PATH=<conda 安装文件夹># !! Contents within this block are managed by 'conda init' !!__conda_setup="$($CONDA_PATH'/bin/conda''shell.bash''hook'2>/dev/null)"if[$?-eq0];theneval"$__conda_setup"elseif[-f"$CONDA_PATH/etc/profile.d/conda.sh"];then."$CONDA_PATH/etc/profile.d/conda.sh"elseexportPATH="$CONDA_PATH/bin:$PATH"fifiunset__conda_setup

在运行任务时, 如果设置了 -v -x 等参数, 那么 conda activate 这些操作会输出很长的信息, 可以用 conda_ 函数替换 conda:

functionconda_(){declarelast_option=$-;set+vxudeclareargs="$*"echo"conda${args}"conda${args}foroptioninvx udoif[["$last_option"==*"$option"*]]thenset-"$option"fidone}
  • -v: 在运行命令前打印这条命令
  • -x: 替换命令中的变量并打印替换后的命令
  • -u: 如果管道中出错, 则报错 (如 PS1 在非交互式终端中不存在, conda initialize 试图修改于是报错)

如果任务需要调用多个脚本, 每个脚本各自需要不同的 conda 环境, 又不希望多次运行 conda initialize, 那么可以在 ~/.conda_init 最前面加入这一部分:

if["$(type-tconda_)"==function];thenecho"conda initialized, skip"return0fi

最终版本: ~/.conda_init

if["$(type-tconda_)"==function];thenecho"conda initialized, skip"return0fi# >>> conda initialize >>>declareCONDA_PATH=<conda 安装文件夹># !! Contents within this block are managed by 'conda init' !!__conda_setup="$($CONDA_PATH'/bin/conda''shell.bash''hook'2>/dev/null)"if[$?-eq0];theneval"$__conda_setup"elseif[-f"$CONDA_PATH/etc/profile.d/conda.sh"];then."$CONDA_PATH/etc/profile.d/conda.sh"elseexportPATH="$CONDA_PATH/bin:$PATH"fifiunset__conda_setup# <<< conda initialize <<<functionconda_(){declarelast_option=$-;set+vxudeclareargs="$*"echo"conda${args}"conda${args}foroptioninvx udoif[["$last_option"==*"$option"*]]thenset-"$option"fidone}
http://www.jsqmd.com/news/636368/

相关文章:

  • 告别LabelImg!用Roboflow一站式搞定图片标注、增强与数据集管理
  • 银河麒麟 aarch64 大数据 Excel 导入:常见问题与优化思路分享
  • 多商户平台小程序的核心功能有哪些?
  • BiRefNet高分辨率二分图像分割:5分钟快速上手指南
  • 大模型下半场:2026年的五个关键预测
  • 深度学习理论框架:六周掌握核心技能
  • 4.14
  • Internet Archive Downloader:3步突破数字图书馆借阅限制的终极指南
  • 遥感图像智能分析:基于PyTorch的变化检测框架深度解析
  • 内存测试指标和工具
  • 一个简洁易用的 Delphi JSON 封装库,基于 System.JSON`单元封装,提供更直观的 API浅
  • 4.15
  • Z-Image-Turbo-辉夜巫女快速上手:8步生成动漫美图,新手5分钟搞定
  • iPad+向日葵远程控制:通过降级安装旧版向日葵11.2.2解决键盘快捷键失效问题(附罗技K380适配方案)
  • JasperReport 6.16 报表开发实战:Table组件与Dataset数据源的高效整合
  • B站资源下载终极指南:跨平台BiliTools使用全攻略
  • Intv_AI_MK11算法优化实战:改进模型推理效率的常用策略
  • 别再手动切文档了!用Dify 2.0的‘知识管道’流水线,5分钟搞定复杂PDF的RAG知识库搭建
  • 低代码平台新引擎:Dify集成Phi-4-mini-reasoning构建专属AI工作流
  • 如何彻底解决OCR文本重复问题:DeepSeek-OCR的NGram重复检测机制全解析
  • intv_ai_mk11应用场景:高校教师备课辅助——课程简介、思考题、知识点总结
  • FDAF/PFDAF
  • 4.16
  • 3步实现Chrome浏览器与KeePass密码库无缝同步
  • 20253317 孙晓东实验二《Python程序设计》实验报告
  • 3步解锁AI视频解说:NarratoAI让每个人都能成为专业内容创作者
  • 建议收藏:新手小白学习人工智能,推荐哪些入门书籍和课程?适合零基础的有哪些?
  • 实验20:Rviz:三维可视化显示平台
  • 4.17
  • 基于VScode的安装——MinGW的介绍和安装