CommandNotFoundError:您的 shell 尚未正确配置
使用“conda激活”。
这里的问题是你的脚本在子 shell 中运行,但是conda
尚未在此子 shell 中初始化。
你需要改变你的active脚本为:
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
eval "$(conda shell.bash hook)"
conda activate build_env
displayName: Active
另外,请不要分割Add PATH
, create environment
and active the environment
进入不同的工作岗位。
对于 Azure DevOps 管道,agent job
是管道运行流程的基本单元,每个Agent作业都有自己独立的运行环境和工作逻辑。
有关更详细的信息,您正在使用托管代理在此问题场景中应用您的脚本。
当有一个代理作业开始运行时,我们的池系统将assign此代理作业的虚拟机。并且,该虚拟机将是recycled代理工作完成后返回。当下一个代理作业开始运行时,将创建一个全新的虚拟机randomly重新分配。
dependsOn
只能在作业之间共享文件和传递变量。它不能让VM继续进行下一个作业。
我相信你应该能够猜到你会遇到什么问题。是的,即使你也可以成功应用它activate
脚本,你将继续面对另一个error: Could not find conda environment: build_env
。那是因为它使用的环境activate
脚本是一个全新的虚拟机,之前的虚拟机build_environment
使用的作业已被系统回收。
因此,不要将创建环境和激活拆分为 2 个代理作业:
- job: build_environment
displayName: Build Environment
dependsOn: pre_build_setup
steps:
- script: conda env create --file environment.yml --name build_env
displayName: Create Anaconda environment
- script: conda env list
displayName: environment installation verification
- task: Bash@3
inputs:
targetType: 'inline'
script: |
eval "$(conda shell.bash hook)"
conda activate build_env
displayName: Active