为什么说模块pygame没有init成员?

时间:2018-05-28 15:21:47

标签: python pygame pylint

以下是我的代码:

import pygame
pygame.init()

我非常困惑,因为如果我尝试运行该文件,那么似乎没有问题,但是pylint会说以下内容:

E1101:模块' pygame'没有' init'构件

我已经彻底搜索了这个"错误"的解决方案。在我发现的每个相关案例中,解决方案是确保我没有创建另一个名为" pygame"的文件或文件夹,因为在这种情况下,我只是导入我自己的文件或文件夹。 但是,我没有创建一个名称甚至接近" pygame"的文件夹或文件,所以我不知道问题是什么。

如前所述,我似乎能够毫无问题地运行该文件,但我是新手,并且在我的学习过程中遇到这样的错误会让我感到困惑。

我在Visual Studio Code中编写代码,我使用python 3.6,我使用pygame 1.9.3并更新了我的pylint。任何帮助将不胜感激。

14 个答案:

答案 0 :(得分:18)

如果您有VS代码,请进入.vscode文件夹> settings.json或搜索python.linting.mypyArgs。在“用户设置”标签下,将其粘贴在花括号之间

"python.linting.pylintArgs": [
"----extension-pkg-whitelist=1xml"
]

我不再看到pyinit错误。

答案 1 :(得分:12)

我的一个模块遇到了同样的问题。这就是我解决该问题的方法。 (我正在Windows 10上使用Visual Studio)

  1. 在Visual Studio中按 CTRL + SHIFT + P
  2. 选择“首选项:打开设置(JSON)”
  3. 在其中一行下面添加int main() { int arraySize; // Read array size cout<<"Enter desired array size:"; cin>>arraySize; int *arrayPtr=new int[arraySize]; // Print array cout<<"arrayPtr = "<<arraySize<<endl; populateIntegerArray( arrayPtr, arraySize); displayIntegerArray(arrayPtr, arraySize); findMaximumInteger( arrayPtr, arraySize); cout<<"DELETING array at arrayPtr = "<<arrayPtr<<endl; delete[] arrayPtr; return 0; } (如有必要,请添加逗号)
  4. 保存"python.linting.pylintArgs": ["--generate-members"]文件( CTRL + S

对我来说,代码看起来像这样:

.json

希望有帮助。 感谢github上的@Alamnoor

答案 2 :(得分:5)

总结所有答案。 这是不加载非默认C扩展名的安全措施。

  1. 您可以将特定扩展名列入白名单。

打开用户设置,然后在{}之间添加以下内容:

"python.linting.pylintArgs": [
    "--extension-pkg-whitelist=extensionname" // comma separated
]
  1. 您可以允许“不安全地加载”所有扩展。

打开用户设置,然后在{}之间添加以下内容:

"python.linting.pylintArgs": [
    "--unsafe-load-any-extension=y"
]

谢谢Richard和Nearoo。

答案 3 :(得分:4)

我发现将其添加到settings.json()中可以解决此问题。

"python.linting.pylintArgs":[
            "--extension-pkg-whitelist=pygame",
            "--erros-only"
      ]

答案 4 :(得分:2)

我找到了答案,它确实对我有用。 查看已接受的答案并将其更改为extension-pkg-whitelist=lxml

pylint 1.4 reports E1101(no-member) on all C extensions

答案 5 :(得分:1)

This的答案包括您问题的答案。简而言之,它说明:

  

Pylint导入模块可以有效地识别有效的方法和属性。决定导入不属于python stdlib的c扩展会带来安全风险,并且可能会引入恶意代码。

及其解决方案,其中包括:

  

使用.pylintrc设置unsafe-load-any-extensions=yes禁用安全性。

有关pylint.rc的更多信息,请参见here。最快的方法是在项目目录或主目录中创建文件.pylintrc

答案 6 :(得分:1)

我建议转到视图选项卡,单击命令面板并搜索首选项:打开settings.json。然后在代码的最后一行添加一个逗号,在其下面粘贴:

"python.linting.pylintArgs": [
    "--extension-pkg-whitelist=extensionname" // comma separated
]

然后保存您的文档( ctrl + s )。

答案 7 :(得分:0)

检查您是否在目录中创建了一个名为pygame.py的python文件

答案 8 :(得分:0)

当我开始在Python中使用Visual Studio Code时,我遇到了同样的问题。它与拥有另一个pygame.py或未正确安装无关。它与Visual Studio Code照原样接受您的代码有关,并且由于您无法导入pygame.init(),因此认为它不是正确的模块。要解决此问题,请打开settings.json(进入设置,然后单击{}图标)并将"python.linting.pylintArgs": [ "----extension-pkg-whitelist=1xml" ]粘贴到其中。

答案 9 :(得分:0)

禁用Pylint 1.按Ctrl + Shift + P 2.然后输入Disable Pylint

答案 10 :(得分:0)

我就是这样写的!

from pygame import * #this will import everything inside the pygame module
import pygame

现在我在vscode中没有任何错误。

答案 11 :(得分:-2)

我找到了解决方案,修改了投票最多的答案:

"python.linting.pylintArgs": [
    "--extension-pkg-whitelist=pygame"
]

将“ lxml”替换为“ pygame”。

答案 12 :(得分:-2)

如果您使用的是vscode,则可以进入设置:

python.linting.pylintEnabled = False

它将解决问题。如果您不使用vscode,则可以转到命令提示符并使用命令

手动卸载pylint
pip uninstall pylint. 

答案 13 :(得分:-3)

在Vscode中执行此操作时,我遇到了同样的问题,但是当我从pc终端运行python文件时,它以某种方式解决了。不是Vscode中的终端