29

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

F| Unable to import '_winreg'   

这很明显——Linux 上的 Python 没有这个模块。

那么,我必须在我的 .pylintrc 中添加什么才能忽略此错误?

在此先感谢,奥兹

编辑:

文档说:

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

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

部分解决方案:

pylint --disable=F0401 <filename>

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

4

5 回答 5

30

只需使用以下代码也可以遇到此问题:

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

pylint 构建失败并出现此错误:

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

解决方案pylint0.10 开始可用:

 9:    import msvcrt  # pylint: disable=import-error
于 2016-09-06T11:32:36.360 回答
18

问题已经很老了,但是现在您可以忽略以下模块.pylintrc

ignored-modules=module1,module2,...

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

于 2018-06-28T20:18:33.963 回答
10

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

因此,您可能有一个“pylint-fakes”目录,其中包含一个空的_winreg.py(或者如果您需要检查导入的名称,不是空的,而是带有伪造的变量)。

于 2012-03-08T11:21:25.097 回答
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)

这个小技巧比忽略所有警告做得更好。最理想的情况是,如果我有时间,我会通过.pylintrc文件放置一个补丁来完成它。

于 2012-03-08T10:43:04.213 回答
0

[编辑:这不是想要的解决方案,因为请求更改 pylint 检查文件,但我保留它以防代码本身可以更改,这不能在评论后]:

在 import 语句周围放置一个 try/except 块。

甚至更好。就像是:

CONFIG = 'Unix'


if CONFIG == 'Unix':
    import  UnixLib
elif CONFIG == 'Win':
    import  WinLib
else:
   assert False
于 2012-03-07T14:00:30.793 回答