visual-studio-code - 如何让某些 pygame 模块在 VSC 中工作?其他修复不起作用

标签 visual-studio-code pygame pylint

我现在在使用最新的 python 和 vsCode 时遇到了麻烦。对于我使用的不同 pygame 函数,我不断收到“模块 pygame 没有空白成员 Pylint no-member”。 K_a、K_s、K_d、K_f 和这些控件在游戏中工作正常,但像 QUIT 和 KEYDOWN 以及 LCTRL 和 RCTRL 这样的控件只会使游戏崩溃。 VSC 表示 pygame 模块没有任何成员,即使是那些可以工作的模块。但当我尝试 LCRTL 等时它会崩溃。

我的理解是,这是一个安全功能,Pylint 会阻止某些 pygame 模块,但我不确定,我发现了几个类似的问题,人们建议添加“”python.linting.pylintArgs”:[ “--extension-pkg-whitelist=pygame”和其他内容添加到settings.json 文件中。但这些我都试过了,还是不行!我还尝试添加 import all pygame module 行,并尝试单独添加 pygame 模块,但没有任何效果。请帮忙。

另外,我不知道它是否有帮助,但是当我将鼠标悬停在任何 pygame 模块(例如 K_a 或 K_LCRTL)上时,它们显示为整数而不是特殊的 pygame 模块。它们甚至没有突出显示,只是看起来像普通文本。

编辑:也许值得注意的是,VSC 甚至知道它们是 pygame 控件,因为当我输入它们时,它甚至会自动为我填充它们。我认为它只是 pylint 阻止了某些。但就像我说的,它们都显示为“不是 pygame 成员,pylint 非成员),而且我没有任何名为 game 或 pygame 的文件或任何与之相关的文件。

最佳答案

Pylint 仅分析您的代码,无法阻止在执行期间访问库。如果执行期间出现导入错误,则意味着此特定版本的 pygame 导入错误,无论 pylint 对此有何说明。如果代码有效,则意味着 pylint 错误地认为导入错误。

更准确地说,pylint 默认情况下不会加载 C 绑定(bind)内的代码。 Pygame 具有 c 绑定(bind),因此这意味着 pylint 无法正确检查这些导入,并在事实上它有效时说没有成员,因为 C 代码 pylint 无法分析。

在您的 extension-pkg-whitelist 中添加 pygame 实际上是在这种情况下您必须做的事情。

# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code
extension-pkg-whitelist=pygame

但是最终 pylint 可能会犯错误,如果导入确实很糟糕,您需要在自己测试后通过启动代码来修复这些错误,或者禁用 pylint 检查导入是否可以使用 # pylint:disable =无成员

关于visual-studio-code - 如何让某些 pygame 模块在 VSC 中工作?其他修复不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66512731/

相关文章:

visual-studio-code - VS Code Markdown - 有没有聪明的方法来制作链接智能感知?

typescript - 为什么自动完成停止在 TypeScript 类型的对象中工作?

python - pygame中物体的速度?

python - imp.find_module 的替代品?

python - Visual Studio Code - 删除 pylint

python - 具有访问 protected 成员 : how to avoid? 的属性的 Pylint 警告 `W0212`

javascript - javascriptreact.json 文件中的自定义 react 代码片段在 vscode 中不起作用

python - 如何检测 Pygame 中对象之间的碰撞?

python - 在 pygame 中,新文本在旧文本上呈现

visual-studio-code - 如何在 Visual Studio 代码中重新映射 `Alt+Click` 操作?