You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在AzureML Notebook中获取计算实例引用报UnboundLocalError如何解决

根因说明

这个错误是旧版本azureml-core包的已知代码缺陷:ComputeInstance._get_user_display_name方法中,调用微软Graph API请求用户信息时,如果请求发送阶段就抛出异常(比如网络不通、身份校验前置失败),resp变量还未完成赋值就会进入异常捕获分支,代码尝试读取resp.status_code时就触发了UnboundLocalError。
你当前环境安装的azureml-defaults依赖的azureml-core为存在该缺陷的旧版本。

可行解决方案
  • 方案1:升级Azure ML核心依赖包
    直接执行命令升级到修复了该缺陷的版本(1.44.0及以上版本均已修复):
    pip install --upgrade azureml-core>=1.44.0 azureml-defaults>=1.44.0
    
    升级后重启Notebook内核重新运行代码即可。
  • 方案2:更换计算目标获取方式(无需升级包的临时规避方案)
    不使用ComputeTarget构造函数获取实例,改用工作空间内置的compute_targets字典读取,该方式不会触发用户信息拉取逻辑:
    from azureml.core import Workspace
    ws = Workspace.from_config()
    compute = ws.compute_targets["MyCompute"]
    
  • 方案3:临时修复本地源码(仅适用于无法升级依赖的特殊场景)
    找到报错信息中对应的computeinstance.py文件,定位到_get_user_display_name方法的异常捕获分支,在判断resp.status_code前增加resp变量存在性校验,或者在方法开头初始化resp = None即可。
调试建议
  • 先执行代码确认当前azureml-core版本,排查版本匹配问题:
    import azureml.core
    print(azureml.core.VERSION)
    
  • 运行print(ws.compute_targets.keys())确认当前工作空间下的计算资源名称,排除名称拼写错误、实例不存在的问题。
  • 若升级后仍出现权限类报错,可验证当前登录Azure的身份凭证是否具备读取AAD用户信息的基础权限,以及租户是否有Graph API访问限制。

内容的提问来源于stack exchange,提问作者Mountassir EL MOUSTAAID

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:54:03