Почему говорится, что модуль pygame не имеет члена инициализации?

avatar
Ludde
28 мая 2018 в 15:21
58017
12
45

Вот мой код:

import pygame
pygame.init()

Я очень запутался, потому что если я попытаюсь запустить файл, то проблем вроде бы не будет, но pylint говорит следующее:

E1101: Модуль 'pygame' не имеет члена 'init'

Я тщательно искал решение этой "ошибки". В каждом соответствующем случае, который я нашел, решение заключалось в том, чтобы убедиться, что я не создал другой файл или папку с именем «pygame», потому что в этом случае я просто импортировал бы свой собственный файл или папку.

Однако я не создал папку или файл с именем, хотя бы близким к "pygame", поэтому не знаю, в чем проблема.

Как было сказано ранее, кажется, что я могу запустить файл без каких-либо проблем, и такие ошибки смущают меня в процессе обучения.

Я пишу код в Visual Studio Code, я использую python 3.6, я использую pygame 1.9.3 и обновил свой pylint. Будем признательны за любую помощь.

Источник
MooingRawr
28 мая 2018 в 15:35
2

вы установили pygame с помощью pip или как вы его установили? что происходит, когда вы запускаете print(dir(pygame)) после импорта?

zvone
28 мая 2018 в 16:20
0

Кроме того, что печатается с import pygame; print(pygame)?

Ludde
28 мая 2018 в 18:26
0

Сначала я установил pygame с pip, но я также попытался загрузить для него файл колеса python, извлечь его и поместить папку pygame в Lib\site-packages, где находятся другие вещи, такие как cx_Freeze и Django. Оба метода дают одинаковый результат.

Ludde
28 мая 2018 в 18:28
0

print(dir(pygame)) дает мне большой список того, что выглядит как команды. среди них я действительно могу найти «init». print(pygame) дает мне следующее: <модуль 'pygame' из 'D:\\coding\\python\\lib\\site-packages\\pygame\_init_.py'>

MegaIng
28 мая 2018 в 18:49
0

Код работает, но только pylint сообщает о проблеме, верно?

MegaIng
28 мая 2018 в 18:51
0

@MooingRawr У него нет проблем с выполнением этой программы. Это просто pylint говорит ему, что что-то не так, так что проблема в pylint. (Или я неправильно понял вопрос)

Ludde
28 мая 2018 в 19:32
0

Да, я также думаю, что есть проблема с pylint. Я не получаю никаких ошибок при запуске скрипта. Только pylint дает мне ошибку. Просто я путаюсь, когда pylint постоянно говорит мне, что у меня есть эти ошибки (которых, видимо, не существует?)

Ответы (12)

avatar
Space Penguin
1 августа 2020 в 21:35
2

Я рекомендую перейти на вкладку просмотра, щелкнуть палитру команд и выполнить поиск в настройках: откройте settings.json. Затем добавьте запятую в последней строке кода. Ниже вставьте это:

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

Затем сохраните документ (ctrl + s).

avatar
Akshat2001
12 мая 2020 в 17:05
-3

Отключить Pylint 1.Нажмите ctrl+shift+p 2. Затем введите Отключить Pylint

10 Rep
12 мая 2020 в 18:30
3

Возможно, ОП не хочет отключать pylint.

Aneuway
23 февраля 2021 в 15:32
0

Хотя стандарты иногда могут быть "раздражающими"... обычно они существуют для того, чтобы сделать нас лучшими программистами. Вам лучше добавить комментарий об отключении pylint к ошибке (или просто удалить конкретную проверку no-member)

avatar
banano
11 мая 2020 в 02:11
16

У меня была такая же проблема с одним из моих модулей. Это то, что я сделал, чтобы решить проблему. (Я использую визуальную студию в Windows 10)

  1. Нажмите CTRL+SHIFT+P в visual studio<883858213>
  2. Выберите «Настройки: Открыть настройки (JSON)»
  3. Добавить "python.linting.pylintArgs": ["--generate-members"] под одной из строк (при необходимости поставить запятую)
  4. Сохраните файл .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]": {

    }
}

Надеюсь, это поможет. Кредит @Alamnoor на github

avatar
manoIk
6 мая 2020 в 18:14
5

Я обнаружил, что добавление этого в settings.json() решает проблему.

"python.linting.pylintArgs":[
            "--extension-pkg-whitelist=pygame",
            "--erros-only"
      ]
Michael Dorst
31 октября 2020 в 08:50
1

Обратите внимание, что "--errors-only" не требуется. Похоже, что это отключает предупреждения pylint, что, я бы сказал, плохая идея (предупреждения pylint помогут вам писать лучший код — вы должны оставить их включенными).

avatar
Epic Coder
6 февраля 2020 в 15:48
-6

Если вы используете vscode, вы можете перейти к настройкам:

python.linting.pylintEnabled = False

Это решит проблему. Если вы не используете vscode, вы можете открыть командную строку и вручную удалить pylint с помощью команды

.
pip uninstall pylint. 
avatar
Santiago Reyes
22 ноября 2019 в 19:05
-1

Я нашел решение, изменив ответ, получивший наибольшее количество голосов:

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

"lxml" заменен на "pygame".

avatar
CompuGenuis Programs
26 февраля 2019 в 18:48
18

У меня была такая же проблема, когда я начал использовать Visual Studio Code с Python. Это не имеет ничего общего с наличием другого pygame.py или его неправильной установкой. Это связано с тем, что код Visual Studio воспринимает ваш код буквально, и, поскольку вы не можете импортировать pygame.init(), он считает, что это неправильный модуль.

Чтобы исправить это, откройте файл settings.json (зайдите в настройки и щелкните значок {}) и вставьте

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

к нему.

avatar
Sanketh B. K
26 февраля 2019 в 12:37
1

Проверьте, есть ли в вашем каталоге созданный вами файл Python с именем pygame.py. Если вы это сделаете, то строка import pygame импортирует ваш собственный файл вместо реального модуля Pygame. Поскольку в этом файле нет функции init(), вы видите это конкретное сообщение об ошибке.

avatar
vt.
10 ноября 2018 в 01:40
28

Обобщая все ответы.

Это мера безопасности, позволяющая не загружать нестандартные расширения C.

  1. Вы можете добавить определенные расширения в белый список.

    Откройте настройки пользователя и добавьте следующее между {}:

    "python.linting.pylintArgs": [
        "--extension-pkg-whitelist=extensionname" // comma separated
    ]
    
  2. Вы можете разрешить "небезопасную загрузку" всех расширений.

    Откройте настройки пользователя и добавьте следующее между {}:

    "python.linting.pylintArgs": [
        "--unsafe-load-any-extension=y"
    ]
    
avatar
Nearoo
22 октября 2018 в 10:38
6

Этот ответ содержит ответ на ваш вопрос. Вкратце это объясняет:

Pylint импортирует модули для эффективной идентификации допустимых методов и атрибутов. Было решено, что импорт расширений c, не являющихся частью stdlib python, представляет угрозу безопасности и может привести к внедрению вредоносного кода.

и в качестве решения среди прочего упоминается:

Отключить безопасность с помощью параметра .pylintrc unsafe-load-any-extensions=yes.

См. здесь для получения дополнительной информации о pylint.rc. Самый быстрый способ — просто создать файл .pylintrc в каталоге проекта или домашнем каталоге.

.
avatar
Parkofadown
2 октября 2018 в 01:27
28

Если у вас есть код VS, перейдите в папку .vscode > settings.json или найдите python.linting.mypyArgs На вкладке пользовательских настроек вставьте между фигурными скобками

"python.linting.pylintArgs": [
    "--extension-pkg-whitelist=lxml"  // The extension is "lxml" not "1xml"
]

Я больше не вижу ошибку pyinit.

Parkofadown
22 октября 2018 в 03:05
0

посмотрите по ссылке ниже. он избавляется от ошибки «Модуль 'pygame' не имеет члена 'init'» в коде vs, когда вы пытаетесь создать pygame.

Fritz Lim
25 февраля 2019 в 12:43
7

Если вы используете VS Code для Mac, вот что вам нужно сделать, чтобы отредактировать файл settings.json: 1. Нажмите «Код» (т. е. вкладку «Код Visual Studio», которая находится слева от вкладки «Файл» ) -> Настройки -> Настройки 2. Прокрутите вниз до Расширения и щелкните Python в списке. 3. Щелкните любую из ссылок Edit in settings.json. Это открывает settings.json для редактирования.

HeatfanJohn
13 июня 2019 в 20:27
2

На самом деле мне пришлось внести pygame в белый список, чтобы избавиться от этих ложных ошибок. Должен ли я отредактировать этот ответ соответствующим образом? Работает ли белый список lxml для некоторых пользователей?

Gino Mempin
24 декабря 2019 в 12:29
4

Должно быть "--extension-pkg-whitelist=pygame".

avatar
Billy
2 июля 2018 в 23:04
2

Я нашел ответ, и он действительно работает для меня. Посмотрите принятый ответ и измените его на extension-pkg-whitelist=lxml

.

pylint 1.4 сообщает E1101(no-member) для всех расширений C

Gino Mempin
24 декабря 2019 в 12:32
0

Должно быть "--extension-pkg-whitelist=pygame".