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 应用。