2017-11-07 3 views
0

私はAnaconda2.5をインストールしてPython 2.7を提供しています。私は最新のPySNMPをインストールしました。最初は、PythonスクリプトをPython 2.6を使って別のサーバーから実行しようとしましたが、TypeError(下記参照)があります。私はそれが私のPythonバージョンのためでなければならないと思った、多分何かPySNMPで変更されましたが、私は彼らのサンプルコード(以下を参照)を実行すると、まったく同じエラーを返しました。私は、彼らのサンプルコードがエラーを返し、PySNMPをインストールしているAnacondaが間違っていると疑うことができたのは困惑していますか?
これはサンプルコードです:PySNMPがAnacondaでTypeErrorを返す例のコードでも

#!/root/anaconda2/python 

from pysnmp.hlapi import * 

for (errorIndication, 
    errorStatus, 
    errorIndex, 
    varBinds) in nextCmd(SnmpEngine(), 
         CommunityData('public', mpModel=0), 
         UdpTransportTarget(('demo.snmplabs.com', 161)), 
         ContextData(), 
         ObjectType(ObjectIdentity('IF-MIB', 'ifDescr')), 
         ObjectType(ObjectIdentity('IF-MIB', 'ifType')), 
         ObjectType(ObjectIdentity('IF-MIB', 'ifMtu')), 
         ObjectType(ObjectIdentity('IF-MIB', 'ifSpeed')), 
         ObjectType(ObjectIdentity('IF-MIB', 'ifPhysAddress')), 
         ObjectType(ObjectIdentity('IF-MIB', 'ifType')), 
         lexicographicMode=False): 

if errorIndication: 
    print(errorIndication) 
    break 
elif errorStatus: 
    print('%s at %s' % (errorStatus.prettyPrint(), 
         errorIndex and varBinds[int(errorIndex)-1][0] or '?')) 
    break 
else: 
    for varBind in varBinds: 
     print(' = '.join([x.prettyPrint() for x in varBind])) 

これは私のエラーです:

 
Traceback (most recent call last): 
    File "get_aqx_intersite_bw.py", line 8, in 
    varBinds) in nextCmd(SnmpEngine(), 
    File "/root/anaconda2/lib/python2.7/site-packages/pysnmp/entity/engine.py", line 61, in __init__ 
    self.msgAndPduDsp = MsgAndPduDispatcher() 
    File "/root/anaconda2/lib/python2.7/site-packages/pysnmp/proto/rfc3412.py", line 29, in __init__ 
    'SNMP-TARGET-MIB', 'SNMP-USER-BASED-SM-MIB' 
    File "/root/anaconda2/lib/python2.7/site-packages/pysnmp/smi/builder.py", line 337, in loadModules 
    self.loadModule(modName, **userCtx) 
    File "/root/anaconda2/lib/python2.7/site-packages/pysnmp/smi/builder.py", line 306, in loadModule 
    'MIB module \"%s\" load error: %s' % (modPath, traceback.format_exception(*sys.exc_info())) 
pysnmp.smi.error.MibLoadError: MIB module "/root/anaconda2/lib/python2.7/site-packages/pysnmp/smi/mibs/SNMPv2-MIB.pyc" load error: ['Traceback (most recent call last):\n', ' File "/root/anaconda2/lib/python2.7/site-packages/pysnmp/smi/builder.py", line 301, in loadModule\n exec(modData, g)\n', ' File "/home/ilan/minonda/envs/_build/lib/python2.7/site-packages/pysnmp/smi/mibs/SNMPv2-MIB.py", line 26, in \n', ' File "/root/anaconda2/lib/python2.7/site-packages/pysnmp/proto/rfc1902.py", line 201, in subtype\n self, value, implicitTag, explicitTag, subtypeSpec\n', 'TypeError: subtype() takes at most 2 arguments (5 given)\n'] 

答えて

0

それは互換性のないpysnmp/pyasn1のバージョンとは何かを持っている必要があります。

状況に応じて、両方のパッケージを最新のPyPIリリース(pip install --upgrade pysnmp pyasn1)にプッシュするか、現在のpyasn1バージョンに固執している場合は、pNSnmpを4.3.10にダウングレードしてください。

+0

ご回答いただきありがとうございます。私はアナコンダを使用していますので、私はしました: –

+0

あなたの返事ありがとうございます。私はアナコンダを使用していますので、私はやった: condaはpysnmp condaがpyasn1 アップグレードアップグレードすると、それは生産: pysnmp 4.3.2 py27_0 pyasn1 0.3.7 py27haf6b024_0 私はpysnmpと別のサーバー上の作業環境を持っている= 4.3 .2とpyasn1 = 0.1.9問題なく動作します。私はこれらの仕様でコンドーム環境を作りましたが、起こっていたエラーはなくなりました。 (新しいエラーが発生しましたが、それは別の問題です)あなたの答えは、その特定のエラーに関して正しいと思われます。 –

+0

、pyasn1-0.3.7は0.1.9に比べて新鮮です。例えば、pyasn1-0.1.9の場合はpysnmp-4.3.2、pyasn1-0.3.7の場合はpysnmp-4.4.1が動作します。他にもたくさんのものがありますが、あなたが最初に持っていたものは、バージョンによってはかなり不均衡です。 ;-) –

関連する問題