AWS CodeBuild安装Miniconda后conda命令未找到、无法激活环境问题
问题核心根因
两个报错本质是三个配置疏漏导致:
- CodeBuild默认执行构建命令的shell为轻量的
dash,而非交互式bash:既不会自动加载刚安装的Miniconda的可执行路径,也不支持source这类bash专属内置命令,这就是source: not found报错的来源 - 安装Miniconda后没有加载conda的shell钩子脚本,直接调用
conda命令时系统找不到对应可执行文件,触发conda: not found报错 - 存在变量名误用和拼写错误:用来指定安装路径的变量写成了
CONDA_PREFIX=minicond——CONDA_PREFIX是conda激活环境后自动设置的内置变量,不是安装时用来传路径的参数,而且路径名少了末尾的a,和实际安装路径不匹配
修正后可直接运行的构建命令
phases: install: commands: - cd $CODEBUILD_SRC_DIR # 用自定义的无冲突变量存Miniconda的绝对安装路径 - export MINICONDA_ROOT=$CODEBUILD_SRC_DIR/miniconda3 - wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-py37_4.8.3-Linux-x86_64.sh - bash Miniconda3-py37_4.8.3-Linux-x86_64.sh -b -p $MINICONDA_ROOT # 兼容dash的环境加载写法,替代source命令 - . $MINICONDA_ROOT/etc/profile.d/conda.sh # 加载完成后即可正常激活base环境 - conda activate base # 可加一行验证激活状态 - conda env list
关键注意事项
- 跨shell兼容写法:所有原来用
source 脚本路径的地方,换成.(英文点加空格加脚本路径),dash和bash都能正常识别 - 不要跳过conda的钩子脚本加载:哪怕你把conda的bin路径手动加到
PATH里,conda activate的环境切换逻辑也依赖这个钩子脚本,直接加PATH是无法完成环境激活的 - 安装路径尽量用绝对路径:避免相对路径在CodeBuild的不同执行阶段出现路径解析偏差
内容的提问来源于stack exchange,提问作者Chaitanya Bapat
相关产品推荐
相关产品推荐

