PySNMP错误:pysnmp.smi.error.SmiError

时间:2010-09-16 21:22:15

标签: python pysnmp

我在Windows XP计算机上运行Python程序。当我运行程序时,我收到以下错误:

File "C:\Python27\lib\pysnmp\smi\builder.pyt, line 230, in loadModules...
pysnmp.smi.error.SmiError: MIB file "SNMPv2-MIB.py[co]" not found in search path

文件SNMPv2-MIB.py目前位于C:\Python27\Lib\pysnmp\smi\mibs。有谁知道我怎么能解决这个问题?

5 个答案:

答案 0 :(得分:4)

如果缺少mib,请确保在使用pip install pysnmp-mibs时首先执行了pip install pysnmp

答案 1 :(得分:2)

您无法加载MIB​​文件。

你能查一下:

>>> print builder.MibBuilder().getMibPath()

通常这应该没问题,因为mib实例应该在

pysnmp/smi/mibs/instances

在builder.py中引发错误的代码

if not self.__modSeen.has_key(modName):
    raise error.SmiError(
        'MIB file \"%s\" not found in search path' % (modName and modName + ".py[co]")
            )

通常这应该通过在调用loadModules之前调用mibBuilder实例上的setMibPath来解决。

自从你获得的路径

C:\Python27\lib\pysnmp\smi\mibs\instances, 
C:\Python27\lib\pysnmp\smi\mibs, 
C:\Python27\lib\pysnmp_mibs

为什么不将文件移动到其中一个目录? 它当前所在的位置

  • C:\ Python27 \ LIB \ pysnmp \ SMI \的MIB

不是通过builder.MibBuilder()获取的路径.getMibPath()

答案 2 :(得分:2)

我刚遇到同样的问题。我为它提交了一个错误并包含了一个补丁: https://sourceforge.net/tracker/?func=detail&aid=3204704&group_id=14735&atid=114735

正如Sivakumar所说,它失败的原因是因为pysnmp正在寻找扩展名为.pyc或.pyw的MIB。 pysnmp从imp.get_suffixes()获取这些扩展。根据pysnmp处理此函数返回的扩展的方式,.pyw条目将覆盖.py条目。我提出的修复方法将忽略.pyw扩展名。

如果从.egg安装库,它应该可以正常工作,因为.egg包含已编译的(pyc)MIB。

答案 3 :(得分:1)

我遇到了同样的问题(使用pysnmp-4.2.5)。我使用:

生成了我自己的MIB python文件
build-pysnmp-mib -o IF-MIB.py /usr/share/mibs/ietf/IF-MIB
RHEL6上的

build-pysnmp-mib在RHEL5上不起作用,因为它需要libsmi版本> 0.4.5而RHEL5只有这个版本,而RHEL6有0.4.8)。

然后我将生成的文件IF-MIB.py复制到pysnmp的其他python MIB文件所在的目录中,(/.../site-packages/pysnmp/smi/mibs/

答案 4 :(得分:0)

今天我也面临同样的问题。 mibs路径已正确设置。在调试模式下运行pysnmp时,我发现它需要一个SNMPv2-MIB.pyc或.pyw文件。

由于我已经从源解压缩pysnmp并使用它,因此mib模块的相应pyc文件在该文件夹结构中不可用。我没有尝试编译pysnmp-4.1.13a \ pysnmp \ smi \ mibs \ instances或pysnmp-4.1.13a \ pysnmp \ smi \ mibs中可用的相应.py文件,而是使用easyinstall脚本下载pysnmp模块。

使用egg文件,现在问题还没有到来。

由于 西瓦库玛