Открытие exe-файла из моей программы Pygame дает мне ошибки импорта


Я сделал MP3-плеер с кодом pygame:

from Tkinter import *
import pygame
import glob
import tkFont
songs=[]
for x in glob.glob('C:WhaleTunesDownloaded/*mp3'):

    songs.append(x)
Admin=Tk()
num=0
plpa=-1
songas=Label(Admin,text='',bg='red')
songas.place(relx=0.0,rely=0.7)
def play(number):

    pygame.mixer.music.unpause()
    pygame.mixer.music.load(songs[number])
    pygame.mixer.music.play()

    songas.configure(text=songs[number])


def pause():
     pygame.mixer.music.pause()
def Pre():
    global num
    if num == 0:
        z = len(songs)
        num=z
        num+=1
    num-=1
    play(num)
def Next():
    global num
    num+=1
    play(num)
#init pygame mixer
pygame.mixer.init()
#atach all buttons & labels
fons=tkFont.Font(family="bold", size=40)
fon=tkFont.Font(family="Helvetica", size=20)
tit=Label(Admin,text='Mp3 Player',font=fons,fg='grey',bg='red')
tit.place(relx=0.2,rely=0.0)
playnpause=Button(Admin,text='Play',command=lambda:play(num),fg='yellow',bg='red',font=fon)
playnpause.place(relx=0.0,rely=0.4)
last=Button(Admin,text='Previous',command=Pre,fg='yellow',bg='red',font=fon)
last.place(relx=0.2,rely=0.4)
first=Button(Admin,text='Next',command=Next,fg='yellow',bg='red',font=fon)
first.place(relx=0.5,rely=0.4)
pauses=Button(Admin,text='Pause',command=pause,fg='yellow',bg='red',font=fon)
pauses.place(relx=0.7,rely=0.4)
Admin.minsize(width=500, height=200)
Admin.maxsize(width=500, height=200)
Admin.configure(bg='red')
Admin.mainloop()

И я попытался поместить его в exe с этим кодом:

from distutils.core import setup
import py2exe

setup(console=['mp3player.py'])

Когда я запускаю mp3player.exe я получаю кучу ошибок импорта:

C:UsersP'saoDownloadsdistmp3player.exe:2: RuntimeWarning: import display: N
o module named _view
(ImportError: No module named _view)
C:UsersP'saoDownloadsdistmp3player.exe:2: RuntimeWarning: import draw: No m
odule named _view
(ImportError: No module named _view)
C:UsersP'saoDownloadsdistmp3player.exe:2: RuntimeWarning: import image: No
module named _view
(ImportError: No module named _view)
C:UsersP'saoDownloadsdistmp3player.exe:2: RuntimeWarning: import pixelcopy:
 No module named _view
(ImportError: No module named _view)
C:UsersP'saoDownloadsdistmp3player.exe:2: RuntimeWarning: import transform:
 No module named _view
(ImportError: No module named _view)

Кто-нибудь знает, как это исправить?

И когда я компилирую все, я получаю эту ошибку:

The following modules appear to be missing
['AppKit', 'Foundation', 'Numeric', 'OpenGL.GL', '_scproxy', 'copyreg', 'dummy.P
rocess', 'numpy', 'pkg_resources', 'queue', 'winreg', 'pygame.sdlmain_osx']
2 4

2 ответа:

Решение состоит в том, чтобы добавить import pygame._view в начало вашего основного исходного файла. Любой из упаковщиков должен работать после этого. Я столкнулся с этой проблемой, используя cx_Freeze, py2exe и pyInstaller. Это серьезная ошибка, влияющая на многие из exe-упаковщиков при попытке упаковать программы pygame.

Имел ту же проблему раньше и нашел ответ, чтобы решить ее самостоятельно:

Через несколько недель (была эта проблема даже раньше) я счастлив сказать, что я решил эту проблему! :)

1-я часть моей проблемы (http://i.stack.imgur.com/WpkjR.png ): Я решил ее путем редактирования setup.py скрипт с добавлением в него" исключающей " части. Это привело к успешному созданию исполняемого файла!

Изменено setup.py сценарий:

from distutils.core import setup
import py2exe
setup(windows=['source_static.py'], options={
          "py2exe": {
              "excludes": ["OpenGL.GL", "Numeric", "copyreg", "itertools.imap", "numpy", "pkg_resources", "queue", "winreg", "pygame.SRCALPHA", "pygame.sdlmain_osx"],
              }
          }
      )

Итак, если у вас есть подобные проблемы, просто поместите эти "отсутствующие" модули в эту строку" исключает".

2-я Часть:

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

font1 = pygame.font.SysFont(None, 13)

После изменения "None " на некоторое системное имя шрифта (например, "Arial" (должна быть строка)) и компиляции, я не мог поверить, что мой .exe-файл работал!

font1 = pygame.font.SysFont("Arial", 13)

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

Так что для всех вас, кто испытывает эти проблемы, попробуйте эти шаги, и я надеюсь, что вы добьетесь успеха. Я очень надеюсь, что это поможет вам, потому что я потерял дни и недели, пытаясь решить эту проблему. все эти проблемы. Я даже попробовал сделать свой .exe файл со всеми версиями python и pygame, со многими другими .exe-строители и установочные скрипты, но без удачи. Помимо этих проблем, у меня было много других проблем, но я нашел ответы на них на stackoverflow.com. Я счастлив, что нашел способ решить эту проблему и помочь вам, если вы столкнулись с такими же проблемами.

Небольшие советы (вещи, которые я также сделал):

1-й: обновление Microsoft Библиотека Visual C++ до последней версии.

2-й: если у вас есть изображения или шрифты, подобные тем, которые нужны вашей исполняемой программе, включите их в папкуdist (где ваш .создан exe-файл).

3-й: когда вы делаете свой .exe-файл, включите все необходимые файлы в папку, где ваш setup.py script is (все файлы и каталоги, которые использует ваш основной скрипт).

Используется Python 2.7 x64, pygame и py2exe .