Почему он говорит, что в модуле pygame нет элемента init?
Ниже приведен код, который у меня есть:
import pygame
pygame.init()
Я очень смущен, потому что, если я попытаюсь запустить файл, то, похоже, не проблема, но pylint говорит следующее:
E1101: модуль "pygame" не имеет члена "init"
Я тщательно искал решение этой "ошибки". В каждом соответствующем случае, которое я нашел, решение состояло в том, чтобы убедиться, что я не создал другой файл или папку с именем "pygame", потому что в этом случае я бы просто импортировал свой собственный файл или папку. Однако я не создал папку или файл с именем, даже близким к "pygame", поэтому я не знаю, в чем проблема.
Как было сказано ранее, мне кажется, что я могу запустить файл без каких-либо проблем, но я новичок в этом, и такие ошибки, как это, меня смущает в моем процессе обучения.
Я пишу код в Visual Studio Code, я использую python 3.6, я использую pygame 1.9.3 и обновил свой pylint. Любая помощь будет оценена по достоинству.
Ответы
Ответ 1
Если у вас есть код VS, перейдите в папку .vscode> settings.json или найдите python.linting.mypyArgs. На вкладке пользовательских настроек вставьте между фигурными скобками
"python.linting.pylintArgs": [
"--extension-pkg-whitelist=lxml" // The extension is "lxml" not "1xml"
]
Я больше не вижу ошибку pyinit.
Ответ 2
Обобщая все ответы. Это мера безопасности, позволяющая не загружать нестандартные расширения C.
- Вы можете внести в белый список определенные расширения.
Откройте настройки пользователя и добавьте следующее между {}:
"python.linting.pylintArgs": [
"--extension-pkg-whitelist=extensionname" // comma separated
]
- Вы можете разрешить "небезопасную загрузку" всех расширений.
Откройте настройки пользователя и добавьте следующее между {}:
"python.linting.pylintArgs": [
"--unsafe-load-any-extension=y"
]
Спасибо Ричард и Nearoo.
Ответ 3
Я нахожу ответ, и это действительно работает для меня. См. Принятый ответ и измените его на extension-pkg-whitelist=lxml
pylint 1.4 сообщает E1101 (без членов) на всех расширениях C
Ответ 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" ]
.