You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SGE批量脚本未读取.bashrc且conda命令找不到求助

SGE集群提交任务时Conda环境无法激活的解决方法

问题描述

本地可正常使用多个Conda环境,但通过qsub向SGE集群提交任务时,.bashrc未被读取,导致以下问题:

  • 报错conda: Command not found.,甚至export这类bash基础命令也无法识别
  • 手动执行source ~/.bashrc或source ~/.bash_profile无效
  • 使用qsub -V提交时,脚本能运行但出现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'.

因外部原因无法使用qsub -V,希望能在批量脚本中自由切换Conda环境。

尝试将脚本shebang改为#!/bin/bash -l后,仍报错conda: Command not found.,修改后的脚本如下:

#!/bin/bash -l
#$ -cwd
#$ -l h_cpu=48:00:00
#$ -l h_vmem=2048M
#$ -q pascal@pascal-[0123]-0[01234567]
## allocate the number of cores:
#$ -pe mpi 1
setenv OMP_NUM_THREADS 1

conda activate my_env
python ./test.py

解决方案

方法1:指定Conda路径并手动初始化

直接调用Conda的完整路径,同时加载Conda的初始化脚本,避免依赖shell配置文件:

#!/bin/bash
#$ -S /bin/bash
#$ -cwd
#$ -l h_cpu=48:00:00
#$ -l h_vmem=2048M
#$ -q pascal@pascal-[0123]-0[01234567]
#$ -pe mpi 1

# 获取Conda根目录(无需硬编码路径)
CONDA_BASE=$(/home/username/miniconda3/bin/conda info --base)
# 加载Conda初始化脚本
source $CONDA_BASE/etc/profile.d/conda.sh
# 激活目标环境
conda activate my_env

export OMP_NUM_THREADS=4
python ./test.py

注:/home/username/miniconda3/bin/conda替换为你本地which conda输出的实际路径。

方法2:强制启用bash登录环境

在SGE参数中指定登录shell,让系统自动加载.bash_profile或.bashrc:

#!/bin/bash
#$ -S /bin/bash -l
#$ -cwd
#$ -l h_cpu=48:00:00
#$ -l h_vmem=2048M
#$ -q pascal@pascal-[0123]-0[01234567]
#$ -pe mpi 1

# 若Conda初始化配置在.bashrc中,可重新加载确保生效
source ~/.bashrc

conda activate my_env
export OMP_NUM_THREADS=4
python ./test.py

注:将-l放在SGE的#$ -S参数后,优先级高于shebang的设置,更可靠。

方法3:用conda run直接执行命令

无需显式激活环境,直接指定环境运行脚本,跳过激活配置步骤:

#!/bin/bash
#$ -S /bin/bash
#$ -cwd
#$ -l h_cpu=48:00:00
#$ -l h_vmem=2048M
#$ -q pascal@pascal-[0123]-0[01234567]
#$ -pe mpi 1

export OMP_NUM_THREADS=4
# 直接在指定环境中运行python脚本
/home/username/miniconda3/bin/conda run -n my_env python ./test.py

方法4:避免混合shell语法

确保脚本全程使用bash语法,不要混入tcsh的setenv命令:

#!/bin/bash
#$ -S /bin/bash
#$ -cwd
#$ -l h_cpu=48:00:00
#$ -l h_vmem=2048M
#$ -q pascal@pascal-[0123]-0[01234567]
#$ -pe mpi 1

# 使用bash的export而非tcsh的setenv
export OMP_NUM_THREADS=4

# 加载Conda初始化脚本
source /home/username/miniconda3/etc/profile.d/conda.sh
conda activate my_env

python ./test.py

内容的提问来源于stack exchange,提问作者deltasata

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 19:05:35