为啥说模块 pygame 没有 init 成员?
Posted
技术标签:
【中文标题】为啥说模块 pygame 没有 init 成员?【英文标题】:Why does it say that module pygame has no init member?为什么说模块 pygame 没有 init 成员? 【发布时间】:2018-11-07 05:30:18 【问题描述】:这是我的代码:
import pygame
pygame.init()
我很困惑,因为如果我尝试运行该文件,那么似乎没有问题,但 pylint 说如下:
E1101:模块 'pygame' 没有 'init' 成员
我已彻底寻找解决此“错误”的方法。在我发现的每个相关案例中,解决方案是确保我没有创建另一个名为“pygame”的文件或文件夹,因为在这种情况下,我只会导入我自己的文件或文件夹。
但是,我没有创建一个名称甚至接近“pygame”的文件夹或文件,所以我不知道问题是什么。
如前所述,我似乎能够毫无问题地运行该文件,并且在学习过程中出现此类错误使我感到困惑。
我在 Visual Studio Code 中编写代码,我使用的是 python 3.6,我使用的是 pygame 1.9.3 并更新了我的 pylint。任何帮助将不胜感激。
【问题讨论】:
您是否使用pip
安装了pygame,或者您是如何安装的?导入后运行 print(dir(pygame))
会发生什么?
还有,用import pygame; print(pygame)
打印什么?
我首先使用pip
安装了 pygame,但我也尝试为它下载一个 python 轮文件,解压缩并将 pygame 文件夹放入 Lib\site-packages,这是其他类似的东西cx_Freeze 和 Django 是一样的。两种方法产生相同的结果。
print(dir(pygame))
给了我一个看起来像命令的大列表。其中,我实际上可以找到'init'。 print(pygame)
给了我这个:如果你有 VS 代码,进入你的 .vscode 文件夹 > settings.json 或搜索 python.linting.mypyArgs 在用户设置选项卡下粘贴在大括号之间
"python.linting.pylintArgs": [
"--extension-pkg-whitelist=lxml" // The extension is "lxml" not "1xml"
]
我不再看到 pyinit 错误。
【讨论】:
查看下面的链接。当您尝试制作 pygame 时,它消除了 vs 代码中的“模块 'pygame' 没有 'init' 成员”错误。 如果您使用的是 Mac 版 VS Code,您需要执行以下操作才能编辑 settings.json 文件: 1. 单击 Code(即打开的 Visual Studio Code 选项卡) “文件”选项卡的左侧)-> 首选项-> 设置 2. 向下滚动到扩展并单击列表中的 Python。 3. 单击任一Edit in settings.json
链接。这会打开 settings.json 进行编辑。
实际上,我必须将pygame
列入白名单才能摆脱这些错误错误。我应该相应地编辑这个答案吗?白名单lxml
是否适用于某些用户?
应该是"--extension-pkg-whitelist=pygame"
。【参考方案2】:
总结所有答案。
这是一种不加载非默认 C 扩展的安全措施。
您可以将特定的扩展程序列入白名单。
打开用户设置并在 之间添加以下内容:
"python.linting.pylintArgs": [
"--extension-pkg-whitelist=extensionname" // comma separated
]
您可以允许“不安全加载”所有扩展。
打开用户设置并在 之间添加以下内容:
"python.linting.pylintArgs": [
"--unsafe-load-any-extension=y"
]
【讨论】:
【参考方案3】:当我开始将 Visual Studio Code 与 Python 结合使用时,我遇到了同样的问题。它与拥有另一个 pygame.py 或未正确安装它无关。这与 Visual Studio Code 从字面上理解您的代码这一事实有关,并且由于您无法导入 pygame.init()
,因此它认为它不是一个正确的模块。
要解决此问题,请打开 settings.json(进入您的设置,然后单击 图标)并粘贴
"python.linting.pylintArgs": [
"--extension-pkg-whitelist=pygame"
]
给它。
【讨论】:
【参考方案4】:我的一个模块遇到了同样的问题。这就是我为解决问题所做的。 (我在 Windows 10 上使用 Visual Studio)
-
在 Visual Studio 中按 CTRL+SHIFT+P
选择“首选项:打开设置 (JSON)”
在其中一行下方添加
"python.linting.pylintArgs": ["--generate-members"]
(必要时加逗号)
保存.json
文件(CTRL+S)
对我来说,代码如下所示:
"breadcrumbs.enabled": false,
"editor.minimap.enabled": false,
"python.pythonPath": "C:\\Users\\xxx\\Anaconda3",
"terminal.integrated.rendererType": "dom",
"window.menuBarVisibility": "default",
"workbench.activityBar.visible": false,
"workbench.statusBar.visible": true,
"python.linting.pylintArgs": ["--generate-members"], //line to add
"[json]":
希望对您有所帮助。 归功于 github 上的@Alamnoor
【讨论】:
【参考方案5】:This answer 包括您的问题的答案。简而言之,它解释了:
Pylint 导入模块以有效识别有效方法和属性。决定导入不属于 python stdlib 的 c 扩展存在安全风险,并可能引入恶意代码。
作为解决方案,它提到了,其中包括:
使用
.pylintrc
设置unsafe-load-any-extensions=yes
禁用安全。
有关pylint.rc
的更多信息,请参阅here。最快的方法是在项目目录或主目录中创建文件.pylintrc
。
【讨论】:
【参考方案6】:我发现在 settings.json() 中添加这个可以解决问题。
"python.linting.pylintArgs":[
"--extension-pkg-whitelist=pygame",
"--erros-only"
]
【讨论】:
请注意,"--errors-only"
不是必需的。看起来这会禁用 pylint 警告,我会说这是一个坏主意(pylint 警告将帮助您编写更好的代码 - 您应该将它们保持打开状态)。【参考方案7】:
我找到了答案,它确实对我有用。
查看接受的答案并将其更改为extension-pkg-whitelist=lxml
pylint 1.4 reports E1101(no-member) on all C extensions
【讨论】:
应该是"--extension-pkg-whitelist=pygame"
。【参考方案8】:
我建议转到视图选项卡,单击命令面板并搜索首选项:打开 settings.json。然后在代码的最后一行添加一个逗号。在下面粘贴这个:
"python.linting.pylintArgs": [
"--extension-pkg-whitelist=extensionname" // comma separated
]
然后保存您的文档 (ctrl + s)。
【讨论】:
【参考方案9】:检查您的目录中是否有一个名为pygame.py
的python 文件由您创建。如果你这样做了,那么import pygame
行正在导入你自己的文件而不是真正的 Pygame 模块。由于您在该文件中没有 init()
函数,因此您会看到此特定错误消息。
【讨论】:
【参考方案10】:我找到了解决办法,修改投票最多的答案:
"python.linting.pylintArgs": [
"--extension-pkg-whitelist=pygame"
]
将“lxml”替换为“pygame”。
【讨论】:
【参考方案11】:禁用 Pylint 1.按 ctrl + shift + p 2.然后输入 Disable Pylint
【讨论】:
也许 OP 不想禁用 pylint。 虽然标准有时可能会“令人讨厌”……但它们通常是为了让我们成为更好的程序员。您最好在错误上添加一个 pylint 禁用注释(或者只是删除特定的no-member
检查)【参考方案12】:
如果您使用的是vscode
,那么您可以进入设置:
python.linting.pylintEnabled = False
它将解决问题。如果您不使用vscode
,则可以转到命令提示符并使用命令手动卸载pylint
pip uninstall pylint.
【讨论】:
以上是关于为啥说模块 pygame 没有 init 成员?的主要内容,如果未能解决你的问题,请参考以下文章
Pygame 已经安装;但是,python终端说“没有名为'pygame'的模块”(Ubuntu 20.04.1)
Pygame 已经安装;但是,python终端说“没有名为'pygame'的模块”(Ubuntu 20.04.1)