Как сказать Pylint, чтобы игнорировать определенный импорт?
Я занимаюсь разработкой программного обеспечения для Windows с Python. Я занимаюсь разработкой для Linux и использую Pylint для проверки своего кода. Я не могу избавиться от ошибки:
F| Unable to import '_winreg'
Это очевидно - Python в Linux не имеет этого модуля.
Итак, что мне нужно добавить в мой.pylintrc, чтобы игнорировать эту ошибку?
Спасибо заранее, Оз
РЕДАКТИРОВАТЬ:
Документация гласит:
:F0401: *Unable to import %r*
Used when pylint has been unable to import a module.
Теперь мне нужно найти, как его использовать...
Частичное решение:
pylint --disable=F0401 <filename>
Я все еще ищу способ сделать через.pylintrc.
5 ответов
Для тех, кто действительно хочет игнорировать модули, я помещаю сюда свой маленький патч для pylint: в /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
файл.
Просто запустите это также с помощью следующего кода:
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
Вопрос довольно старый, но сейчас вы можете игнорировать модули с .pylintrc
лайк:
ignored-modules=module1,module2,...
Я использовал его для подавления проверки неустановленных модулей сторонними инструментами CI, и он работает просто отлично.
Решение, которое я видел, использовалось на моем рабочем месте, где есть специальный модуль, в который Pylint не может попасть (Python встроен, и этот специальный модуль находится внутри основного исполняемого файла, в то время как Pylint запускается в обычной установке Python). чтобы смоделировать его, создав файл.py и поместив его в путь python при запуске pylint (см. ошибку PyLint "Unable to import" - как установить PYTHONPATH?).
Таким образом, у вас может быть каталог "pylint-fakes", содержащий пустой _winreg.py
(или если вам нужно проверить импортированные имена, не пустые, а с поддельными переменными).
[Редактировать: Это не желаемое решение, так как запрашивается изменение в файле проверки на наличие пилинтов, но я оставляю его на случай, если сам код можно изменить, чего нельзя сделать после комментария]:
Поместите блок try/ исключением вокруг оператора импорта.
Или даже лучше. что-то вроде:
CONFIG = 'Unix'
if CONFIG == 'Unix':
import UnixLib
elif CONFIG == 'Win':
import WinLib
else:
assert False