导入 pygame pylint 时会发疯:
E1101:Module 'pygame' has no 'init' member
E1101:Module 'pygame' has no 'QUIT' member
我搜索了网络,我发现了这个:
"python.linting.pylintArgs": ["--ignored-modules=pygame"]
它解决了 pygame 的问题,但现在 pylint 以其他方式发疯了:crazy_pylint.png .
然后我找到了
"python.linting.pylintArgs": ["--ignored-files=pygame"]
,但它所做的是完全禁用我正在工作的整个目录的 pylint。那么我怎么说pylint pygame 一切正常?
最佳答案
对于 E1101
:
问题是大部分 Pygame 都是直接用 C 实现的。现在,就性能而言,这一切都很好,但是,pylint(VSCode 使用的 linter)无法扫描这些 C 文件。
不幸的是,这些相同的文件定义了一堆有用的东西,即 QUIT
和其他常量,例如 MOUSEBUTTONDOWN
, K_SPACE
等,以及 init
等函数或 quit
.
要解决这个问题,首先,通过删除 "python.linting.pylintArgs"
中的所有参数,停止忽略 pygame 模块。 .相信我,linter 可以派上用场。
现在来解决问题。对于您的常量(大写的任何内容),手动导入它们,如下所示:
from pygame.constants import (
MOUSEBUTTONDOWN, QUIT, MOUSEMOTION, KEYDOWN
)
您现在可以使用这些,而无需在它们前面加上
pygame.
:for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
if event.type == KEYDOWN:
# Code
接下来,为您的
init
和其他功能错误,您可以通过两种方法手动帮助 linter 解决这些问题:# pylint: disable=no-member
.这将停用整个文件的成员验证,防止显示此类错误。 # pylint: disable=no-member
pygame.quit()
# pylint: enable=no-member
这与第一种方法的作用类似,但它只将效果限制在该行上。
最后,对于所有其他警告,解决方案是修复它们。 Pylint 可以向您展示代码无意义或不符合 Python 规范的地方。快速浏览一下您的屏幕截图,例如您的模块没有文档字符串,您已经声明了未使用的变量......
Pylint 可以帮助您编写简洁、清晰和美观的代码。您可以忽略这些警告或隐藏它们(使用
# pylint: disable=
和 these codes )或花一点时间清理所有内容。从长远来看,这是最好的解决方案,因为它会使您的代码更具可读性,因此更易于维护,而且看起来更令人愉悦。
关于python - 导入 pygame 时,在 VScode 中为 pylint 导入失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53012461/