Открытие 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 ответа:
Решение состоит в том, чтобы добавить
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 .