Почему в модуле pygame нет члена init? - PullRequest
0 голосов
/ 28 мая 2018

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

import pygame
pygame.init()

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

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

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

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

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

Ответы [ 6 ]

0 голосов
/ 26 февраля 2019

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

0 голосов
/ 26 февраля 2019

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

0 голосов
/ 10 ноября 2018

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

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

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

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

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

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

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

0 голосов
/ 22 октября 2018

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

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

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

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

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

0 голосов
/ 02 октября 2018

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

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

Я больше не вижу пиинитошибка.

0 голосов
/ 03 июля 2018

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

Pylint 1.4 сообщает E1101 (без участия) по всем расширениям C

...