使用 Anaconda 环境运行管道
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
代理命令将使其可用于所有后续步骤。
- bash: echo "##vso[task.prependpath]$CONDA/bin"
displayName: Add conda to PATH
创建环境
从命令行参数
conda create
命令将使用你传递给它的参数创建一个环境。
- bash: conda create --yes --quiet --name myEnvironment
displayName: Create Anaconda environment
从 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 在名为 myEnvironment
的 conda 环境中安装 scipy
包。
- bash: |
source activate myEnvironment
conda install --yes --quiet --name myEnvironment scipy
displayName: Install Anaconda packages
在 Anaconda 环境中运行管道步骤
注意
每个生成步骤都在自己的进程中运行。
激活 Anaconda 环境时,它将编辑 PATH
并对其当前进程进行其他更改。
因此,必须为每个步骤单独激活 Anaconda 环境。
- bash: |
source activate myEnvironment
python -m pytest --junitxml=junit/unit-test.xml
displayName: pytest
- task: PublishTestResults@2
inputs:
testResultsFiles: 'junit/*.xml'
condition: succeededOrFailed()
常见问题
为什么我收到“权限被拒绝”错误?
在托管 macOS 上,代理用户没有安装 Miniconda 的目录的所有权。 如需修复,请查看将 conda 添加到系统路径下的“托管 macOS”选项卡。
为什么我的生成在 conda create
或 conda install
步骤上停止响应?
如果你忘记传递 --yes
,conda 会停下来,等待用户交互。
为什么 Windows 上的脚本在激活环境后停止?
在 Windows 上,activate
是 Batch 脚本。 激活后,你必须使用 call
命令才能继续运行脚本。
请参阅在管道中使用call
的示例。