Атрибут Pygame, init ()

Я пытаюсь использовать Pygame с Python 3.3 на моем ноутбуке с Windows 8. Pygame установлен нормально, и когда я import pygame, он также отлично импортирует. Хотя когда я пытаюсь выполнить этот небольшой код:

import pygame

pygame.init()

size=[700,500]
screen=pygame.display.set_mode(size)

Я получаю такую ​​ошибку:

Traceback (most recent call last):
  File "C:\Users\name\documents\python\pygame_example.py", line 3, in <module>
    pygame.init()
AttributeError: 'module' object has no attribute 'init'

Я использовал pygame-1.9.2a0-hg_56e0eadfc267.win32-py3.3 для установки Pygame. Pygame установлен в этом месте 'C: \ PythonX', а Python 3.3 установлен в этом месте 'C: \ Python33'. Я смотрел на других людей, у которых была такая же или похожая проблема, и, похоже, это не помогло устранить ошибку. Я сделал что-нибудь не так при установке Pygame? Или он не поддерживает windows 8?


person user2387537    schedule 11.11.2013    source источник
comment
Что печатает import pygame; print(pygame.__file__)?   -  person Martijn Pieters    schedule 11.11.2013
comment
Traceback (последний вызов последним): файл ‹pyshell # 3›, строка 1, в ‹module› print (pygame .__ file__) AttributeError: объект 'module' не имеет атрибута 'file' @MartijnPieters   -  person user2387537    schedule 11.11.2013
comment
Интересно. Понятия не имею, что вы туда импортировали, но я пытаюсь понять, действительно ли это модуль pygame или что-то еще. Конечно, возможно, что «настоящий» pygame модуль не имеет атрибута .__file__, но это вызывает удивление. print(pygame) дает какие-нибудь подробности?   -  person Martijn Pieters    schedule 11.11.2013
comment
Кроме того, я хочу, чтобы вы добавили операторы print() в свой скрипт, а не запускали их в оболочке Python, пожалуйста.   -  person Martijn Pieters    schedule 11.11.2013
comment
Когда я напечатал print(pygame.__file__) в своем скрипте, у меня все еще была та же ошибка, что и раньше, а когда я напечатал print(game) в своем скрипте, я получил следующее: <module 'pygame' (namespace)>. @MartijnPieters   -  person user2387537    schedule 11.11.2013


Ответы (4)


После импорта pygame pygame.init ()

Я получил это сообщение об ошибке, и программа не работала: «AttributeError: модуль 'pygame' не имеет атрибута 'init'»

потому что я назвал файл "pygame.py" ...

Когда я изменил имя файла на «pygametest.py», все сработало.

Называя имя файла точно так же, как имя модуля, кажется, запутывает python ...

person Giovanni Stallione    schedule 02.12.2018

Где-то на вашем пути есть каталог с именем pygame.

$ mkdir pygame  # empty directory
$ python3.3
>>> import pygame
>>> pygame
<module 'pygame' (namespace)>
>>> pygame.__path__
_NamespacePath(['./pygame'])

Удалите или переименуйте этот каталог, он маскирует фактический пакет pygame.

Если вы используете print(pygame.__path__), он сообщит вам, где был найден каталог; в приведенном выше примере он был найден относительно текущего каталога (./).

person Martijn Pieters    schedule 11.11.2013
comment
Хорошая детективная работа. Разве это не должно происходить только с каталогами, содержащими __init__.py? - person interjay; 11.11.2013
comment
@interjay: Нет, не в Python 3, в котором добавлена ​​поддержка пространства имен (что setuptools делает со специальными __init__.py файлами). - person Martijn Pieters; 11.11.2013
comment
@interjay: см. docs.python.org/ 3 / что нового / - person Martijn Pieters; 11.11.2013
comment
Понятно. Я полагаю, что документация устарела, потому что в ней говорится: __init__.py файлы необходимы заставить Python обрабатывать каталоги как содержащие пакеты; это сделано для того, чтобы каталоги с общим именем, например string, непреднамеренно скрывали допустимые модули, которые появляются позже на пути поиска модулей. - person interjay; 11.11.2013
comment
@interjay: это не пакеты. Это пространства имен. :-П - person Martijn Pieters; 11.11.2013
comment
@interjay: но если вы чувствуете, что руководство больше не соответствует действительности, не стесняйтесь сообщать об ошибке в проекте Python. - person Martijn Pieters; 11.11.2013
comment
кстати: вы можете получить ту же ошибку, если поместите свой код в файл pygame.py - person furas; 11.11.2013
comment
@furas: но затем import pygame; print(pygame.__file__) печатает имя файла для этого модуля или пакета. - person Martijn Pieters; 11.11.2013

Я также назвал свое приложение pygame.py, и у меня была такая же проблема, но когда я его изменил, у меня все заработало.

person foster nusetor    schedule 17.07.2019

Попробуйте разместить модуль pygame в .\PythonX\Lib\site-packages\

Я использую pip для установки всех необходимых мне модулей.

Вы скачали pygame и вручную поместили его в папку PythonX? Может ошибка в этом.

person D_00    schedule 14.08.2020