python - 导入 pygame 时,在 VScode 中为 pylint 导入失败

标签 python visual-studio-code pygame vscode-settings pylint

导入 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-memberpygame.quit()# pylint: enable=no-member

  • 这与第一种方法的作用类似,但它只将效果限制在该行上。

    最后,对于所有其他警告,解决方案是修复它们。 Pylint 可以向您展示代码无意义或不符合 Python 规范的地方。快速浏览一下您的屏幕截图,例如您的模块没有文档字符串,您已经声明了未使用的变量......
    Pylint 可以帮助您编写简洁、清晰和美观的代码。您可以忽略这些警告或隐藏它们(使用 # pylint: disable=these codes )或花一点时间清理所有内容。

    从长远来看,这是最好的解决方案,因为它会使您的代码更具可读性,因此更易于维护,而且看起来更令人愉悦。

    关于python - 导入 pygame 时,在 VScode 中为 pylint 导入失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53012461/

    相关文章:

    python - 在 Python 中组合两个程序的代码

    Python - PyGame - 学习向量/动画

    python - 我可以在 Django 的哪个位置运行启动来加载数据?

    python - 无法执行 collectstatic

    python - ubuntu 上的 Visual Studio Code 中的 os.envron ['PATH' 的 KeyError

    python - 想要将pygame项目转换为windows可执行文件

    python - 如何在 python 中解析 json 字符串而不修改它?

    python - 对平面上有 4 个点的图片进行不失真/去扭曲处理

    python - VSCode - 当我尝试打印 unicode 时,输出窗口显示 "UnicodeEncodeError"

    visual-studio-code - Visual Studio Code : How to define key bindings for page-home and page-end