как сказать 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