我在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
。有谁知道我怎么能解决这个问题?
答案 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
为什么不将文件移动到其中一个目录? 它当前所在的位置
不是通过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文件,现在问题还没有到来。
由于 西瓦库玛