Python 没有名为compat.octets的模块

Python 没有名为compat.octets的模块,python,snmp,pysnmp,Python,Snmp,Pysnmp,我正在尝试使用下面的代码执行简单的SNMP操作。请帮我找出错误 from pysnmp.entity.rfc3413.oneliner import cmdgen cmdGen = cmdgen.CommandGenerator() errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd( cmdgen.CommunityData('public'), cmd

我正在尝试使用下面的代码执行简单的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
回溯(最近一次呼叫最后一次):
文件“tut.py”,第1行,在
从pysnmp.entity.rfc3413.oneliner导入cmdgen
文件“/usr/lib/python2.6/site packages/pysnmp/entity/rfc3413/oneliner/cmdgen.py”,第1行,在
从pysnmp.entity导入引擎,配置
文件“/usr/lib/python2.6/site packages/pysnmp/entity/engine.py”,第2行,在
从pysnmp.proto.rfc3412导入MsgAndPduDispatcher
文件“/usr/lib/python2.6/site packages/pysnmp/proto/rfc3412.py”,第3行,在
从pyasn1.compat.octets导入null
ImportError:没有名为compat.octets的模块

很可能您的系统pyasn1和pysnmp包的版本彼此不兼容。我建议将pyasn1和pysnmp包(最新的)都放在$HOME中,并设置$PYTHONPATH指向它们中的每一个。

这可能是对上一篇文章的评论。伊利亚的回答是对的。就我而言,我已经能够通过切换到更高版本的pyasn1来纠正这个问题。正在使用10.0.11a-1ubuntu1并切换到10.1.7-1ubuntu2。如果在python-pysnmp4的依赖项中更好地表述此依赖项,则会更好。您是如何安装
pysnmp
软件包的?这个代码对我来说很好用。我得到
1.3.6.1.2.1.1.5.0=zeus.snmplabs.com
不允许在公司提供给我的linux机器上安装任何软件包。这很烦人。如您所见,他们仍在让我们使用python 2.6。在IT部门接受请求之前,我什么也做不了。据我的经理说,他们总是拒绝这些请求。因此,如果这段代码只适用于最新的pysnmp包,那么请向我推荐一种使用python中的任何内置库实现这一点的替代方法。