我正在使用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工具,它工作得很好.
对于那些真正想忽略模块的人,我在这里放置我的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文件提供补丁.