2

我在 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. 有谁知道我该如何解决这个问题?

4

5 回答 5

6

如果 mib 丢失,请确保您已经执行了pip install pysnmp-mibs第一个,如果您使用了pip install pysnmp.

于 2012-09-08T12:33:17.983 回答
3

我刚刚遇到了同样的问题。我为它提交了一个错误并包含了一个补丁: 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。

于 2011-03-09T22:54:48.420 回答
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\mibs

不在您通过 builder.MibBuilder().getMibPath() 获得的路径中

于 2010-09-16T21:42:01.407 回答
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/

于 2013-11-26T08:04:30.547 回答
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文件,现在问题不来了。

谢谢 Sivakumar

于 2010-12-22T05:53:21.857 回答