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