没有名为 compat.octets 的模块

0 投票
2 回答
1967 浏览
提问于 2025-04-18 10:42

我正在尝试使用下面的代码来执行简单的SNMP操作。请帮我找出错误。

    from pysnmp.entity.rfc3413.oneliner import cmdgen

    cmdGen = cmdgen.CommandGenerator()

    errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd(
        cmdgen.CommunityData('public'),
        cmdgen.UdpTransportTarget(('demo.snmplabs.com', 161)),
        cmdgen.MibVariable('SNMPv2-MIB', 'sysName', 0),
    )

    # Check for errors and print out results
    if errorIndication:
        print(errorIndication)
    elif errorStatus:
        print(errorStatus)
    else:
        for name, val in varBinds:
            print('%s = %s' % (name.prettyPrint(), val.prettyPrint()))

上面的代码出现了以下错误:

Traceback (most recent call last):
  File "tut.py", line 1, in <module>
    from pysnmp.entity.rfc3413.oneliner import cmdgen
  File "/usr/lib/python2.6/site-packages/pysnmp/entity/rfc3413/oneliner/cmdgen.py", line 1, in <module>
    from pysnmp.entity import engine, config
  File "/usr/lib/python2.6/site-packages/pysnmp/entity/engine.py", line 2, in <module>
    from pysnmp.proto.rfc3412 import MsgAndPduDispatcher
  File "/usr/lib/python2.6/site-packages/pysnmp/proto/rfc3412.py", line 3, in <module>
    from pyasn1.compat.octets import null
ImportError: No module named compat.octets

2 个回答

0

这段话其实应该是对之前帖子的一条评论。Ilya的回答是对的。我这边通过升级pyasn1的版本解决了这个问题。之前我用的是1 0.0.11a-1ubuntu1,后来换成了1_0.1.7-1ubuntu2。如果python-pysnmp4的依赖关系能写得更清楚就好了。

0

很可能你的系统中的pyasn1和pysnmp这两个包版本不兼容。建议你把这两个包(最新版本)都放到你的$HOME目录下,并设置$PYTHONPATH指向它们。

撰写回答