2010-09-16 4 views
2

Я запускаю программу Python на компьютере под управлением Windows XP. Когда я запускаю программу, я получаю следующее сообщение об ошибке:Ошибка PySNMP: pysnmp.smi.error.SmiError

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. Кто-нибудь знает, как я могу это решить?

+0

@AaronMcSmooth: Решение было предусмотрено здесь, так что я думаю, мы можем отметить другой вопрос повторяется, как другой, более поздний. – pyfunc

+0

@pyfunc. Уже сделано, я не заметил, что другой был более поздним. Я не могу отменить свой голос, но я проголосовал за его закрытие. Если кто-то хочет проголосовать за него, он находится по адресу: http: //stackoverflow.com/questions/3732439/errors-using-pysnmp-on-windows-xp – aaronasterling

ответ

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]") 
      ) 

Обычно это должно решаться путем вызова setMibPath в экземпляре mibBuilder перед вызовом loadModules.

Так как путь вы получаете

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()

+0

Я получаю следующее: – Lulu

+0

C: \ Python27 \ lib \ pysnmp \ smi \ mibs \ instance, C: \ Python27 \ lib \ pysnmp \ smi \ mibs, C: \ Python27 \ lib \ pysnmp_mibs – Lulu

+0

Почему он ищет «SNMPv2-MIB.py [co]» вместо SNMPv2-MIB.py ? – Lulu

0

Сегодня я тоже сталкиваюсь с этой же проблемой. Путь mibs правильно установлен. Во время работы pysnmp в режиме отладки я могу обнаружить, что он ожидает файл SNMPv2-MIB.pyc или .pyw.

Поскольку я распаковал pysnmp из источника и использовал его, соответствующий файл pyc для модуля mib недоступен в этой структуре папок. Я не пытался скомпилировать соответствующие .py-файлы, доступные в pysnmp-4.1.13a \ pysnmp \ smi \ mibs \ instance или pysnmp-4.1.13a \ pysnmp \ smi \ mibs, вместо этого я использовал сценарий easyinstall для загрузки модуля pysnmp.

С файлом яйца теперь проблема не наступает.

Благодаря Sivakumar

2

Я просто столкнулся с той же проблемой. Я подал ошибку для этого и включал в себя патч: https://sourceforge.net/tracker/?func=detail&aid=3204704&group_id=14735&atid=114735

Как говорит Sivakumar, причина это недостаток, потому что это pysnmp ищет MIBs с .pyc или .pyw расширения. pysnmp получает эти расширения от imp.get_suffixes(). Основываясь на том, как pysnmp имеет дело с расширениями, возвращаемыми из этой функции, запись .pyw перезапишет запись .py. Исправление, которое я предложил, просто игнорирует расширение .pyw.

Если вы устанавливаете библиотеку из .egg, она должна работать нормально, потому что .egg включает скомпилированные (pyc) MIB.

4

Если отсутствует плющилка, убедитесь, что вы выполнили команду pip install pysnmp-mibs, если вы использовали pip install pysnmp.

1

Я столкнулся с тем же вопросом (с pysnmp-4.2.5). Я создал свой собственный MIB-файл питона с помощью:

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 в каталог, где другие питон MIB файлы pysnmp расположены, (/.../site-packages/pysnmp/smi/mibs/)

Смежные вопросы