Azure DevOps中如何在Conda YAML文件指定--use-deprecated=legacy-resolver
问题描述
在Azure DevOps流水线中通过conda.yml文件创建Conda环境时,因依赖问题导致conda env create -n env-name --file conda.yml命令卡住。已知添加--use-deprecated=legacy-resolver参数可解决该问题,但不清楚如何在流水线配置中正确设置(希望保留Conda环境创建流程,而非直接用pip install)。此前尝试在yml依赖项后附加[--use-deprecated=legacy-resolver](如pandavro [--use-deprecated=legacy-resolver]),但Conda不识别该语法。当前conda.yml配置如下:
channels: - conda-forge - nodefaults dependencies: - python=3.9.12 - pip>=19.0 - pip: - numpy==1.22.0 - pandavro - scikit-learn - ipykernel - pyspark - mlflow - mltable
解决方案
--use-deprecated=legacy-resolver是Conda命令的参数,而非conda.yml文件的配置项,不能直接写在依赖列表里。以下是两种可行的配置方式:
方式1:修改Azure DevOps流水线的命令执行步骤
在流水线的脚本任务中,直接给conda env create命令添加该参数。示例流水线YAML片段如下:
steps: - script: | conda env create -n env-name --file conda.yml --use-deprecated=legacy-resolver displayName: 'Create Conda environment with legacy resolver'
如果流水线中使用的Conda版本较旧,建议先升级Conda以确保参数可用:
steps: - script: | conda update -n base conda -y conda env create -n env-name --file conda.yml --use-deprecated=legacy-resolver displayName: 'Update Conda and create environment'
方式2:在conda.yml中配置经典求解器(Conda 4.11+支持)
若不想每次执行命令都附加参数,可在conda.yml开头添加求解器配置,指定使用旧版经典求解器(效果与命令行参数一致):
solver: classic channels: - conda-forge - nodefaults dependencies: - python=3.9.12 - pip>=19.0 - pip: - numpy==1.22.0 - pandavro - scikit-learn - ipykernel - pyspark - mlflow - mltable
内容的提问来源于stack exchange,提问作者chopor
相关产品推荐
相关产品推荐

