2016-07-05 4 views
1

На прошлой неделе я начал изучать Python. Я новичок, у меня мало опыта в кодировании.Pygame + Pyinstaller = ImportError: Нет модуля с именем 'pygame'

Я создал «Space Invader» игру, используя Pygame (установленный в моей виртуальной среде), и она прекрасно работает, когда я запускаю его с python2.7, как

python myfile.py 

Однако, если я запускаю его как

python3 myfile.py 

у меня есть ошибка Traceback

ImportError: No module named 'pygame' 

Классный я могу справиться с этим, даже если я не знаю, почему. Однако, когда я использую pyinstaller myfile.py, он превращает программу в автономные исполняемые файлы, используя Python3

115 INFO: PyInstaller: 3.2 
115 INFO: Python: 3.5.0b4 
125 INFO: Platform: Darwin-15.5.0-x86_64-i386-64bit 
126 INFO: wrote mydir/myfile.py 

и, следовательно, ту же ошибку, когда я запустить приложение. Я работаю над капитаном Mac OSX El Captain.

Вопросы: Почему это не работает на Python3? Как использовать 'pyinstaller' с Python2.7?

Все объяснения по управлению пакетами с «человеческим» языком приветствуются.

P.S. Я пробовал cx_Freeze и bbFreeze, но я всегда получаю следующую ошибку. У меня есть Mac OSX El Captain.

OSError: [Errno 1] Operation not permitted: '/mydir/MacOS.so' 
+0

Не знаю, как это работает на Mac, но проблема в том, что PyGame (и любой другой пакет) должен быть установлен для каждого Python индивидуально.Вы только установили его для Python 2. Вам нужно _also_ установить его для Python 3. – imallett

+0

Вы упомянули «виртуальную» среду. Все, что вам нужно, - это активировать среду, в которой находится 'python2.7'. Обратите внимание, что El Capitan также имеет свой собственный python 2.7. Убедитесь, что вы не путаетесь друг с другом. – alvits

+0

Привет, ребята, кто-нибудь может мне помочь? http://stackoverflow.com/questions/38244537/bug-pyinstaller-payload-veil-show-prompt-windows-while-i-run-it –

ответ

1

библиотеки Python установлены отдельно для Python 2 и Python 3. Похоже, у вас есть pygame установлен только для Python 2. Регулярное pip install [package] только устанавливает версию Python 2 в большинстве установок. В общем, все считают Python 2 «стандартной» версией по какой-то причине, включая другие основные ОС на базе Unix.

  1. Во-первых, активировать virtualenv (source ./bin/activate в каталоге venv).

  2. pip3 install hg+http://bitbucket.org/pygame/pygame (или, может быть, pip-3.5) в вашем virtualenv должно исправить это.

  3. Если он жалуется, что hg не найден, установите Mercurial как-то (например, sudo port install mercurial, если у вас есть MacPorts).

  4. Попробуйте. Запустите python3, затем поставьте import pygame.

Источники:

  • Pygame установка от ПУМ: Unable to install Pygame using pip
  • Я использую OS X El Capitan. Я просто проверил свой ответ, и я могу открыть интерпретатор Python 3 и import pygame.
+0

Хорошо. Я следовал вашим указаниям. Для этого я создал другую виртуальную среду, и я установил pygame как 'pip3 install hg + bitbucket.org/pygame/pygame' ;. Однако, чтобы заставить 'pyinstaller' работать, мне пришлось установить его в моем виртуальном env с помощью' pip3 install pyinstaller' перед его запуском. –

+0

Теперь у меня есть еще одна небольшая проблема. Когда я запускаю исполняемый файл в виртуальной среде, он работает правильно, но в тот момент, когда я запускаю локальную среду, у меня есть следующая ошибка: pygame.error: Не удалось открыть изображения/ProEuro1.png'. Использует ли 'pygame' изображения, используемые в коде? Если нет, как мне управлять ими? –

+0

Я не знаком с 'pygame' или' pyinstaller' специально, но, судя по сообщению об ошибке, я не думаю, что 'pygame' содержит изображения в источнике. В вашем рабочем каталоге должен быть каталог изображений. Он должен находиться в том же каталоге, где и где открывается файл Python. Если вы можете найти его, вы можете попробовать его передвинуть, но помимо этого вам, вероятно, придется оглядеться еще больше. – sudo

Смежные вопросы