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

Nornir 3.30对比2.8.3的变更及导入相关报错问题咨询

Nornir 2.8.3 升级到3.3.0 核心变更与问题解决

核心变更点

  • 初始化方式重构:2.x版本的init_nornir(小写函数)被替换为3.x的InitNornir(驼峰命名类),导入路径保持from nornir import InitNornir,旧的小写函数名不再支持。
  • 插件体系拆分:3.x移除了内置的nornir.plugins模块,所有第三方插件(如netmiko、textfsm等)独立为单独的PyPI包,需单独安装后导入。
  • 任务调用语法微调:nr.run()建议显式指定task参数,写法更规范。

逐个问题解决

  1. 无法找到Nornirinit相关文件
    3.x版本不再提供单独的Nornirinit文件,初始化逻辑已整合到核心的InitNornir类中,直接通过该类完成Nornir实例初始化即可。

  2. netmiko_send_command无法导入

    • 先安装独立的netmiko插件包:
      pip install nornir-netmiko
      
    • 修正导入路径:
      from nornir_netmiko.tasks import netmiko_send_command
      
  3. ImportError: cannot import name 'Initnornir' from 'nornir'

    • 大小写错误:3.x的正确类名为InitNornir(首字母大写,驼峰格式),而非Initnornir。
    • 正确导入语句:
      from nornir import InitNornir
      
  4. 代码执行异常
    原代码存在多处语法和逻辑错误,修正后的完整代码如下:

    # 导入正确的模块
    from nornir import InitNornir
    from nornir_netmiko.tasks import netmiko_send_command
    from nornir_utils.plugins.functions import print_result
    
    # 初始化Nornir实例(调用InitNornir类,传入配置文件路径)
    nr = InitNornir(config_file="config.yml")
    
    # 执行任务,显式指定task参数
    result = nr.run(task=netmiko_send_command, command_string="sh ip int brief")
    
    # 打印任务结果
    print_result(result)
    

    注意:需提前安装nornir-utils包来使用print_result:

    pip install nornir-utils
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:35:28