导入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。那么我怎么说pygame一切正常呢?
"python.linting.pylintArgs": ["--ignored-files=pygame"]
对于E1101:问题是大多数Pygame直接在C中实现。现在,就性能而言,这一切都很好,但是,pylint(VSCode使用的lint)无法扫描这些C文件。不幸的是,这些相同的文件定义了一堆有用的东西,即QUIT与其他常量,比如MOUSEBUTTONDOWN,K_SPACE等,以及如函数init或quit。
E1101
QUIT
MOUSEBUTTONDOWN
K_SPACE
init
quit
要解决此问题,首先要首先通过删除中的所有参数来停止忽略pygame模块"python.linting.pylintArgs"。相信我,短绒棉可以派上用场。
"python.linting.pylintArgs"
现在解决问题。对于常量(大写形式),请手动将其导入,如下所示:
from pygame.constants import ( MOUSEBUTTONDOWN, QUIT, MOUSEMOTION, KEYDOWN )
现在,您可以使用它们而无需在它们之前添加pygame.:
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
pygame.quit()
# pylint: enable=no-member
这与第一种方法的操作类似,但是将效果限制为仅该行。
最后,对于所有其他警告,解决方案是 修复 它们。Pylint在这里向您展示代码毫无意义或不符合Python规范的地方。快速浏览一下您的屏幕快照,例如,您的模块没有文档字符串,您声明了未使用的变量… Pylint在这里可以帮助您编写简洁,清晰,漂亮的代码。您可以忽略这些警告或隐藏它们(带有# pylint:disable=,或者花一点时间清理所有内容。
# pylint:disable=
从长远来看,这是最好的解决方案,因为它将使您的代码更具可读性,因此更易于维护。