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

Azure DevOps流水线训练模型时报错:'function'对象无'urlencode'属性

解决Azure DevOps训练模型任务报错:'function' object has no attribute 'urlencode'

问题背景

在Azure DevOps中执行「训练模型」任务时,运行以下命令触发报错:

az ml run submit-script -g azure-devops-rg-1 -w mlops-wsp-1 -e cantypedetect --ct mlstudclust2 -d conda_requirements.yml -c train_data -t ../metadata/run.json ./train_test.py

报错信息为:ERROR: 'function' object has no attribute 'urlencode',且确认train_test.py中未直接使用urlencode函数。

可能原因及解决步骤

1. 依赖库导入冲突或意外覆盖

即使代码未直接调用urlencode,第三方依赖库(如requests、urllib)内部调用时,可能因模块被意外覆盖导致报错。

  • 排查操作:在train_test.py开头添加调试代码,验证相关模块状态:
    import urllib
    import urllib.parse
    print("urllib模块类型:", type(urllib))
    print("urllib.parse模块类型:", type(urllib.parse))
    print("urllib.parse是否包含urlencode:", hasattr(urllib.parse, 'urlencode'))
    
    若输出显示urllib.parse是函数类型而非模块,说明代码或依赖库中存在变量覆盖问题,需检查是否有parse = xxx这类赋值语句,或依赖库的导入逻辑错误。

2. Conda环境依赖版本不兼容

Python 3.11对部分旧版本库的兼容性有限,若conda_requirements.yml中依赖版本未明确指定,可能引发内部调用错误。

  • 解决操作:在conda_requirements.yml中明确指定兼容Python 3.11的库版本,示例:
    dependencies:
      - python=3.11.*
      - xgboost=2.0.3
      - requests=2.31.0
      - urllib3=2.1.0
      # 添加其他所需依赖库及对应版本
    
    执行任务前,确保conda环境完全按照配置文件构建,避免缓存的旧版本库干扰。

3. Azure ML CLI扩展版本不兼容

Azure ML CLI扩展的旧版本可能与Python 3.11存在兼容性问题,导致内部调用urlencode时出错。

  • 解决操作:在Azure DevOps的前置任务中更新ML CLI扩展:
    az extension update -n ml
    
    若更新后仍报错,可尝试指定兼容的扩展版本:
    az extension add -n ml --version 2.24.0
    

4. 计算集群初始化脚本干扰

若计算集群配置了自定义初始化脚本,可能修改了Python环境路径或模块导入逻辑,引发冲突。

  • 排查操作:检查集群的初始化脚本,确认是否有修改PYTHONPATH、导入模块或赋值变量的操作,避免覆盖系统模块。

内容的提问来源于stack exchange,提问作者uma_8331

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 20:23:19