Подтвердить что ты не робот

Почему он говорит, что в модуле pygame нет элемента init?

Ниже приведен код, который у меня есть:

import pygame
pygame.init()

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

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

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

Спасибо Ричард и Nearoo.

Ответ 4

Этот ответ включает в себя ответ на ваш вопрос. Вкратце это объясняет:

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

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

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

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

Ответ 5

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

Ответ 6

У меня была та же проблема, когда я начал использовать Visual Studio Code с Python. Это не имеет никакого отношения к наличию другого pygame.py или к неправильной установке. Это связано с тем, что Visual Studio Code воспринимает ваш код буквально, и, поскольку вы не можете импортировать pygame.init(), он считает, что это неправильный модуль. Чтобы это исправить, откройте файл settings.json (зайдите в настройки и щелкните значок {}) и вставьте в него "python.linting.pylintArgs": [ "----extension-pkg-whitelist=1xml" ].