Azure DevOps Services

了解如何在管道中设置 Anaconda 并将其与 Python 配合使用。 Anaconda 是用于数据科学和机器学习的 Python 分发版。

按照这些说明为具有 Anaconda 环境的示例 Python 应用设置管道。

  • 登录到 Azure DevOps 组织,并导航到你的项目。

  • 在项目中,导航到“Pipelines”页面 。 然后选择“操作”以创建新的管道。

  • 首先选择“GitHub”作为源代码位置,完成向导的各个步骤 。

  • 可能会重定向到 GitHub 进行登录。 如果是这样,请输入 GitHub 凭据。

  • 当存储库列表出现时,选择 Anaconda 示例存储库。

  • Azure Pipelines 将分析存储库中的代码并检测现有 azure-pipelines.yml 文件。

  • 选择“运行”。

  • 开始新运行。 请等待运行完成。

    若要按照本主题所述对 YAML 文件进行更改,请在“ 管道 ”页中选择管道,然后选择 “编辑 azure-pipelines.yml 文件”。

    将 conda 添加到系统路径

    托管代理上 ,默认情况下,conda 被排除在之外 PATH ,以阻止其 Python 版本与其他已安装版本冲突。 代理 task.prependpath 命令将使其可用于所有后续步骤。

    Ubuntu macOS Windows

    macOS-latest 代理与 Anaconda 配合使用。

    - bash: echo "##vso[task.prependpath]$CONDA/bin"
      displayName: Add conda to PATH
    # On Hosted macOS, the agent user doesn't have ownership of Miniconda's installation directory/
    # We need to take ownership if we want to update conda or install packages globally
    - bash: sudo chown -R $USER $CONDA
      displayName: Take ownership of conda installation
    
    - script: conda create --yes --quiet --name myEnvironment
      displayName: Create Anaconda environment
    

    若要添加特定的 conda 通道,需要为 conda 配置添加额外的行: conda config --add channels conda-forge

    从 YAML

    可以将文件签 environment.yml 入到定义 Anaconda 环境的配置的存储库。

    - script: conda env create --quiet --file environment.yml
      displayName: Create Anaconda environment
    

    如果使用自承载代理,并且未在末尾删除环境,则下一个生成时将收到错误,因为环境已存在。 若要解决此问题,请使用 --force 参数: conda env create --quiet --force --file environment.yml

    如果使用共享存储的自承载代理,并使用相同的 Anaconda 环境并行运行作业,则这些环境之间可能存在冲突。 若要解析,请使用 --name 参数和唯一标识符作为参数值,例如与 $(Build.BuildNumber) 生成变量的串联。

    从 Anaconda 安装包

    以下 YAML 在 scipy 名为 myEnvironment的 conda 环境中安装包。

    Ubuntu macOS Windows
    - bash: |
        source activate myEnvironment
        conda install --yes --quiet --name myEnvironment scipy
      displayName: Install Anaconda packages
    
    - bash: |
        source activate myEnvironment
        conda install --yes --quiet --name myEnvironment scipy
      displayName: Install Anaconda packages
    
    - script: |
        call activate myEnvironment
        conda install --yes --quiet --name myEnvironment scipy
      displayName: Install Anaconda packages
    

    在 Anaconda 环境中运行管道步骤

    每个生成步骤在其自己的进程中运行。 激活 Anaconda 环境时,它将编辑 PATH 并对其当前进程进行其他更改。 因此,必须为每个步骤单独激活 Anaconda 环境。

    source activate myEnvironment python -m pytest --junitxml=junit/unit-test.xml displayName: pytest - task: PublishTestResults@2 inputs: testResultsFiles: 'junit/*.xml' condition: succeededOrFailed()

    为什么我收到“权限被拒绝”错误?

    在 Hosted macOS 上,代理用户没有安装 Miniconda 的目录的所有权。 有关修补程序,请参阅将 conda 添加到系统路径下的“托管 macOS”选项卡。

    为什么我的生成在 或 conda install 步骤上conda create停止响应?

    如果忘记传递 --yes,conda 将停止并等待用户交互。

    为什么 Windows 上的脚本在激活环境后停止?

    在 Windows 上, activate 是 Batch 脚本。 激活后, call 必须使用 命令继续运行脚本。 请参阅在管道中使用call 的示例。

    如何使用多个版本的 Python 运行测试?

    请参阅 在 Azure Pipelines 中生成 Python 应用

  •