Azure CLI任务触发ADF流水线报错:ModuleNotFound: azure.core.rest
问题
Azure DevOps流水线中的Azure CLI任务触发ADF流水线时,突然报错ModuleNotFound: azure.core.rest——此前运行正常,上周五开始出现该问题。
任务代码如下:
az login --service-principal --username $(test-service-principle-id) --password $(test-service-principle-password) --tenant $(TENANT_ID) az config set extension.use_dynamic_install=yes_without_prompt $runId=az datafactory pipeline create-run --factory-name test-adf --name "pl_load_training_data" --resource-group test-rg --query "runId" --output tsv
已将azure-core添加至requirements.txt,且执行pip list | grep azure-core确认该包已安装,报错堆栈信息见附图。
解决方案
1. 对齐Azure CLI的Python环境与pip安装环境
Azure CLI自带独立的Python环境,你用系统pip安装的azure-core可能未在CLI的环境中生效。先检查CLI使用的Python路径:
az --version
在输出中找到Python location行,例如:Python location '/usr/local/Cellar/azure-cli/2.57.0/libexec/bin/python'
然后使用该路径的pip重新安装并升级azure-core:
# 替换为你查到的实际路径 /usr/local/Cellar/azure-cli/2.57.0/libexec/bin/python -m pip install azure-core --upgrade
2. 升级Azure CLI及datafactory扩展
版本兼容问题大概率是诱因,直接升级CLI和对应扩展:
az upgrade --yes az extension update --name datafactory
3. 禁用动态扩展安装,手动指定稳定版本
动态安装的扩展可能存在依赖缺失问题,先关闭动态安装,手动安装指定版本的datafactory扩展:
az config set extension.use_dynamic_install=no az extension remove --name datafactory # 选择一个稳定兼容的版本,示例为0.1.15,可按需调整 az extension add --name datafactory --version 0.1.15
4. 在DevOps流水线中显式为CLI环境安装依赖
如果使用DevOps代理运行任务,可在Azure CLI任务前添加一个Python脚本任务,自动为CLI的Python环境安装依赖:
- task: PythonScript@0 inputs: scriptSource: 'inline' script: | import subprocess import sys # 获取Azure CLI的Python路径 result = subprocess.run([sys.executable, '-m', 'az', '--version'], capture_output=True, text=True) for line in result.stdout.split('\n'): if 'Python location' in line: python_path = line.split(': ')[1].strip() # 安装/升级azure-core subprocess.run([python_path, '-m', 'pip', 'install', 'azure-core', '--upgrade'], check=True)
内容的提问来源于stack exchange,提问作者Obiii
相关产品推荐
相关产品推荐

