gpt4 book ai didi

yaml - 无法在 Azure DevOps 管道中激活 conda

转载 作者:行者123 更新时间:2023-12-03 19:42:31 25 4
gpt4 key购买 nike

在由 conda 构建的 python 项目上测试 azure devops 管道

jobs:
- job: pre_build_setup
displayName: Pre Build Setup
pool:
vmImage: 'ubuntu-18.04'
steps:
- bash: echo "##vso[task.prependpath]$CONDA/bin"
displayName: Add conda to PATH

- 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

- job: unit_tests
displayName: Unit Tests
dependsOn: build_environment
strategy:
maxParallel: 2
steps:
- bash: conda activate build_env

最后一步 - bash: conda activate build_env失败,出现以下错误
Script contents:
conda activate build_env
========================== Starting Command Output ===========================
/bin/bash --noprofile --norc /home/vsts/work/_temp/d5af1b5c-9135-4984-ab16-72b82c91c329.sh

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'.


##[error]Bash exited with code '1'.
Finishing: Bash

我怎样才能激活 conda?似乎路径错误,因此无法找到 conda。

最佳答案

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.



这里的问题是您的脚本在子 shell 中运行,但是 conda尚未在此子 shell 中初始化。

您需要更改您的 事件 脚本为:
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
eval "$(conda shell.bash hook)"
conda activate build_env
displayName: Active

另外,请不要拆分 Add PATH , create environmentactive the environment进入不同的工作。

对于 Azure DevOps 管道, agent job是流水线运行过程的基本单元,每个代理作业都有自己独立的运行环境和工作逻辑。

有关更详细的信息,您使用的是 托管代理在此问题场景中应用您的脚本。

当有一个代理作业开始运行时,我们的池系统将 分配 此代理作业的 VM。并且,这个 VM 将是 回收 代理工作完成后返回。当下一个代理作业开始运行时,一个全新的 VM 将是 随机重新分配。
dependsOn只能在作业之间共享文件和传递变量。它不能让 VM 在下一个工作中继续。

我相信你应该能够猜到你会遇到什么问题。是的,即使您可以成功应用该 activate脚本,你将继续面对另一个 error: Could not find conda environment: build_env .那是因为这个 activate 所使用的环境脚本是 全新的虚拟机 ,以前的VM 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

关于yaml - 无法在 Azure DevOps 管道中激活 conda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61271364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com