Azure ML Pipeline运行报错:找不到azure.keyvault模块求助
解决Azure ML Pipeline中
azure.keyvault模块找不到的问题 问题详情
在Azure ML Studio中通过Azure Pipeline运行机器学习脚本时,触发错误:
ModuleNotFoundError: No module named 'azure.keyvault'
已执行的尝试:
- 创建包含所有所需依赖的全新ML环境
- 修改现有环境并添加依赖后用于Pipeline运行
- 在项目yaml的脚本步骤中添加
pip install azure-keyvault-secrets
当前使用的conda.yml配置如下:
channels: - anaconda - conda-forge dependencies: - python=3.8.13 - pip: - azureml-defaults~=1.51.0 - azureml-dataprep[pandas] - azure-storage-blob - pyarrow - xlrd - openpyxl - pyyaml - tqdm - catboost - pickle-mixin - azure-keyvault-secrets - scikit-learn - ipykernel - matplotlib - pandas - pip - xlrd - joblib - tqdm - time name: project_ml
解决方案
1. 修正代码中的导入路径
azure-keyvault-secrets包的正确导入路径并非azure.keyvault,而是azure.keyvault.secrets。若代码中直接写import azure.keyvault,必然触发模块找不到的错误。
将导入语句修改为:
from azure.keyvault.secrets import SecretClient from azure.identity import DefaultAzureCredential
2. 确保环境被正确重建并关联到Pipeline
- 删除旧环境实例,基于当前conda.yml重新创建环境。Azure ML可能缓存旧环境,导致新依赖未生效。
- 在Pipeline的计算目标配置中,确认使用的是最新重建的环境版本。可在Azure ML Studio的「环境」页面查看环境版本号,避免引用旧环境。
3. 清理依赖配置中的冲突项
当前conda.yml存在重复依赖(如xlrd、tqdm同时出现在conda和pip依赖列表),且pip被放在conda依赖中,可能导致pip版本不一致,影响包安装。
调整后的conda.yml示例:
channels: - anaconda - conda-forge dependencies: - python=3.8.13 - pip>=21.0 - scikit-learn - ipykernel - matplotlib - pandas - xlrd - joblib - tqdm - pip: - azureml-defaults~=1.51.0 - azureml-dataprep[pandas] - azure-storage-blob - pyarrow - openpyxl - pyyaml - catboost - pickle-mixin - azure-keyvault-secrets name: project_ml
4. 验证环境中的包安装状态
在脚本开头添加验证代码,运行后查看日志确认azure-keyvault-secrets是否安装成功:
import pkg_resources installed_packages = {pkg.key: pkg.version for pkg in pkg_resources.working_set} print("azure-keyvault-secrets版本:", installed_packages.get("azure-keyvault-secrets"))
若输出为None,说明环境未正确安装该包,需重新构建环境。
5. 查看环境构建日志排查问题
在Azure ML Studio的「环境」页面找到对应环境,查看构建日志。日志会显示pip安装包的详细过程,若存在网络问题、依赖冲突导致安装失败,会在日志中体现。
内容的提问来源于stack exchange,提问作者ssuhas76
相关产品推荐
相关产品推荐

