PYSNMP:TypeError:setComponentByType()获取关键字参数'verifyConstraints'的多个值

sbh*_*tta 2 snmp python-2.7 pysnmp

面对PYSNMP 4.3.3的新问题.Python 2.7.13.With SNMP GET和Getnext:与Pysnmp 4.3.2一样正常.实际上我正在观察它与虚拟环境有关的问题.在虚拟环境中,即使我将Pysnmp从4.3.3降级到4.3.2,问题也会被重现.

有人可以告诉我我错过了什么吗?

TypeError:setComponentByType()获取关键字参数'verifyConstraints'的多个值

>>> from pysnmp.hlapi import *
>>> errorIndication, errorStatus, errorIndex, varBinds = next(
...     getCmd(SnmpEngine(),
...            CommunityData('public'),
...            UdpTransportTarget(('127.0.0.1', 161)),
...            ContextData(),
...            ObjectType(ObjectIdentity('SNMPv2-MIB','sysDescr', 0)))
... )
Traceback (most recent call last):
  File "<stdin>", line 6, in <module>
  File "/home/sourav/MyWorkSpace/tempproject_1/lib/python2.7/site-packages/pysnmp/hlapi/asyncore/sync/cmdgen.py", line 111, in getCmd
    lookupMib=options.get('lookupMib', True)))
  File "/home/sourav/MyWorkSpace/tempproject_1/lib/python2.7/site-packages/pysnmp/hlapi/asyncore/cmdgen.py", line 131, in getCmd
    options.get('cbFun'), options.get('cbCtx'))
  File "/home/sourav/MyWorkSpace/tempproject_1/lib/python2.7/site-packages/pysnmp/entity/rfc3413/cmdgen.py", line 214, in sendVarBinds
    v2c.apiPDU.setVarBinds(reqPDU, varBinds)
  File "/home/sourav/MyWorkSpace/tempproject_1/lib/python2.7/site-packages/pysnmp/proto/api/v1.py", line 136, in setVarBinds
    varBindList.getComponentByPosition(idx), varBind
  File "/home/sourav/MyWorkSpace/tempproject_1/lib/python2.7/site-packages/pysnmp/proto/api/v1.py", line 43, in setOIDVal
    verifyConstraints=False)
TypeError: setComponentByType() got multiple values for keyword argument 'verifyConstraints'
>>> 
Run Code Online (Sandbox Code Playgroud)

与旧款式也一样:

>>> from pysnmp.entity.rfc3413.oneliner import cmdgen
>>> cmdGen = cmdgen.CommandGenerator()
>>> errorIndication, errorStatus, errorIndex, varBindTable = cmdGen.nextCmd(cmdgen.CommunityData('public'),cmdgen.UdpTransportTarget(('127.0.0.1', 161), timeout=60, retries=3),cmdgen.MibVariable('SNMPv2-MIB','sysDescr',0))
Run Code Online (Sandbox Code Playgroud)

在下面的链接中,请参阅最后两条评论. https://github.com/home-assistant/home-assistant/issues/5790

使用的包:

appdirs==1.4.2
packaging==16.8
ply==3.10
pyasn1==0.2.3
pycryptodome==3.4.5
pyparsing==2.1.10
pysmi==0.0.7
pysnmp==4.3.3
six==1.10.0
Run Code Online (Sandbox Code Playgroud)

++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++ 从pyasn1 == 0.2.3将Pyasn1降级到0.1.9后,++++++似乎代码正常工作.但问题是在Pysnmp 4.3.3全新安装的同时,Pyasn1 == 0.2.3并且失败了.

Ily*_*gof 5

这是pyasn1/pysnmp交互中的一个不幸的回归.

您可以通过将pyasn1降级到0.2.2或从git master获取pysnmp 或稍等一下直到修复pysnmp出来来解决这个问题.