как сказать pylint игнорировать определенный импорт?

Я разрабатываю программное обеспечение для Windows с Python. Я разрабатываю Linux, и я использую Pylint, чтобы проверить мой код. Я не могу избавиться от ошибки:

F| Unable to import '_winreg'   

это очевидно-Python в Linux не имеет этого модуля.

Итак, что я должен положить в мой .pylintrc игнорировать эту ошибку?

спасибо заранее, ОЗ!--4-->

EDIT:

документация говорит:

:F0401: *Unable to import %r*
  Used when pylint has been unable to import a module.

Теперь мне нужно найти, как использовать его ...

частичное решение:

pylint --disable=F0401 <filename>

Я все еще ищу способ сделать через .пилинтрк.

5 ответов


просто запустите в это, а также со следующим кодом:

 8: if os.name == 'nt':
 9:    import msvcrt
10: else:
11:    import fcntl

pylint не удалось построить С этой ошибкой:

E:  9, 4: Unable to import 'msvcrt' (import-error)

на решение С pylint 0.10:

 9:    import msvcrt  # pylint: disable=import-error

решение, которое я видел на своем рабочем месте, где есть специальный модуль, который Pylint не может получить (Python встроен, и этот специальный модуль находится внутри основного исполняемого файла, в то время как pylint запускается в обычной установке Python), чтобы издеваться над ним, создавая .py-файл и поместить его в путь python при запуске pylint (см. ошибка PyLint "невозможно импортировать" - как установить PYTHONPATH?).

Итак, у вас может быть каталог "pylint-fakes содержащий пустое _winreg.py (или если вам нужно проверить импортированные имена, а не пустые, но с поддельными переменными).


для тех, кто действительно хочет игнорировать модули, я помещаю здесь мой маленький патч для pylint: In '/pylint/checkers/imports.py'

262     def get_imported_module(self, modnode, importnode, modname):
+263         import sys
+264         ignoreModules = ['_winreg', 'your', 'bogus','module','name']
265         try:        
+266             if sys.platform =='linux2' and modname not in ignoreModules:
267                 return importnode.do_import_module(modname)
268         except astng.InferenceError, ex:
269             if str(ex) != modname:
270                 args = '%r (%s)' % (modname, ex)

этот маленький хак делает работу лучше, просто игнорируя все предупреждения. Оптимально, если у меня будет время, я поставлю патч, чтобы сделать это через .


вопрос довольно старый, но прямо сейчас вы можете игнорировать модули с .pylintrc как:

ignored-modules=module1,module2,...

я использовал его для подавления проверки деинсталлируемых модулей с помощью сторонних инструментов CI, и он работает нормально.


[Edit: это не желаемое решение, так как требуется изменение файла проверки pylint, но я оставляю его в случае, если сам код может быть изменен, что не может после комментария]:

поместите блок try/except вокруг инструкции import.

или даже лучше. что-то вроде:

CONFIG = 'Unix'


if CONFIG == 'Unix':
    import  UnixLib
elif CONFIG == 'Win':
    import  WinLib
else:
   assert False