我正在使用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做的方法。
答案 0 :(得分:14)
请使用以下代码进行此操作:
8: if os.name == 'nt':
9: import msvcrt
10: else:
11: import fcntl
pylint
failed the build出现此错误:
E: 9, 4: Unable to import 'msvcrt' (import-error)
自pylint
0.10:
9: import msvcrt # pylint: disable=import-error
答案 1 :(得分:10)
我在我的工作场所使用的解决方案,其中有一个Pylint可能无法访问的特殊模块(Python是嵌入式的,这个特殊模块位于主可执行文件中,而pylint是在常规Python安装)是通过创建.py文件并在运行pylint时将其放在python路径中来模拟它(参见PyLint "Unable to import" error - how to set PYTHONPATH?)。
所以,你可能会有一个&#34; pylint-fakes&#34;包含空_winreg.py
的目录(或者如果需要检查导入的名称,不是空的但是有伪造的变量)。
答案 2 :(得分:9)
问题已经很老了,但是现在您可以忽略带有.pylintrc
的模块,例如:
ignored-modules=module1,module2,...
我已使用它来抑制第三方CI工具对可卸载模块的检查,并且效果很好。
答案 3 :(得分: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
文件添加补丁。
答案 4 :(得分:0)
[编辑:这不是想要的解决方案,因为请求更改了pylint检查文件,但是我保留它以防代码本身可以更改,这不能在评论之后]:
在import语句周围放置一个try / except块。
甚至更好。类似的东西:
CONFIG = 'Unix'
if CONFIG == 'Unix':
import UnixLib
elif CONFIG == 'Win':
import WinLib
else:
assert False