如何告诉pylint忽略某些导入?

Oz1*_*123 18 python pylint

我正在使用Python开发Windows软件.我在Linux上开发,我正在使用Pylint来检查我的代码.我无法摆脱错误:

F| Unable to import '_winreg'   
Run Code Online (Sandbox Code Playgroud)

这很明显 - Linux上的Python没有这个模块.

那么,我必须在我的.pylintrc中放置什么来忽略这个错误?

提前谢谢,奥兹

编辑:

文件说:

:F0401: *Unable to import %r*
  Used when pylint has been unable to import a module.
Run Code Online (Sandbox Code Playgroud)

现在我需要找到如何使用它...

部分解决方案:

pylint --disable=F0401 <filename>
Run Code Online (Sandbox Code Playgroud)

我仍在寻找通过.pylintrc做的方法.

ana*_*nik 15

只需使用以下代码进行此操作:

 8: if os.name == 'nt':
 9:    import msvcrt
10: else:
11:    import fcntl
Run Code Online (Sandbox Code Playgroud)

pylint 使用此错误导致构建失败:

E:  9, 4: Unable to import 'msvcrt' (import-error)
Run Code Online (Sandbox Code Playgroud)

解决方案pylint0.10 起可用:

 9:    import msvcrt  # pylint: disable=import-error
Run Code Online (Sandbox Code Playgroud)


Chr*_*gan 10

我在工作场所使用的解决方案,其中有一个Pylint无法获得的特殊模块(Python是嵌入式的,这个特殊模块在主可执行文件中,而pylint在常规Python安装中运行)是通过创建.py文件并在运行pylint时将其放入python路径来模拟它(请参阅PyLint"无法导入"错误 - 如何设置PYTHONPATH?).

因此,您可能有一个包含空的"pylint-fakes"目录_winreg.py(或者如果您需要检查导入的名称,不是空的但是使用伪造的变量).


a5k*_*kin 10

问题很老,但是现在你可以忽略模块.pylintrc:

ignored-modules=module1,module2,...
Run Code Online (Sandbox Code Playgroud)

我用它来抑制可卸载模块检查第三方CI工具,它工作得很好.

  • @greenmatt它在我的``.pylintrc``的[TYPECHECK]中,也许是不同的版本。 (3认同)
  • 我发现这需要在IMPORTS部分. (2认同)

Oz1*_*123 8

对于那些真正想忽略模块的人,我在这里放置我的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)
Run Code Online (Sandbox Code Playgroud)

这个小小的黑客可以更好地完成工作,然后忽略所有警告.最好的情况是,如果我有时间,我会通过.pylintrc文件提供补丁.