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

升级Ansible至2.5.0后Junos_config报jasonDecoderError问题咨询

问题原因与解决方案

这个问题我之前帮同行排查过类似的,核心原因是Ansible 2.5版本的junos_config模块代码里直接引用了Python 3.5+才新增的json.JSONDecoderError异常类,但没有做Python 2.7的兼容处理——哪怕Ansible官方宣称2.5系列支持Python 2.7,部分模块的细节实现还是会有遗漏。

为什么会出现这个矛盾?

在Python 2.7的json模块里,解析JSON时的错误只会抛出ValueError的子类,并没有单独的JSONDecoderError这个异常类;而这个类是从Python 3.5开始才被加入到标准库的json模块中的。当junos_config模块在Python 2.7环境里尝试调用json.JSONDecoderError时,自然会触发AttributeError,提示找不到这个属性。

具体解决办法

1. 修复模块的Python版本兼容代码

找到你的Ansible安装目录下的junos_config模块文件(通常路径是ansible/modules/network/junos/junos_config.py),做以下修改:

  • 在文件开头的导入部分添加版本判断:
    import sys
    import json
    
    # 兼容Python 2.7的JSON异常类
    if sys.version_info >= (3, 5):
        from json import JSONDecoderError
    else:
        JSONDecoderError = ValueError
    
  • 然后把模块中所有捕获json.JSONDecoderError的地方,替换成刚才定义的JSONDecoderError(比如except JSONDecoderError as e:)

2. 临时规避方案(无需改代码)

如果暂时不想修改模块代码,可以尝试:

  • 降级junos_config模块到兼容Python 2.7的版本(比如对应Ansible 2.4.3的模块版本)
  • 在执行Ansible任务时,添加错误捕获逻辑,不过这只能临时跳过报错,无法根本解决问题

3. 长远建议

虽然Ansible 2.5宣称支持Python 2.7,但Python 2.7早已在2020年停止官方支持,后续的模块更新大概率不会再考虑Python 2.7的兼容。如果条件允许,建议:

  • 升级你的Python环境到3.6及以上版本(Ansible 2.5最低支持Python 3.5,推荐3.6+)
  • 或者暂时回退到Ansible 2.4.3版本,直到你能完成Python版本的升级

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:50:17