python - Abrir un EXE de mi programa Pygame me da errores de importación
py2exe (2)
La solución es agregar import pygame._view
a la parte superior de su archivo fuente principal. Cualquiera de los empaquetadores debería trabajar después de eso. Encontré este problema usando cx_Freeze, py2exe y pyInstaller. Este es un error grave que afecta a muchos de los empaquetadores de exe al intentar empaquetar programas de pygame.
Hice un reproductor de MP3 con código de pygame:
from Tkinter import *
import pygame
import glob
import tkFont
songs=[]
for x in glob.glob(''C:/WhaleTunes/Downloaded/*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()
Y traté de ponerlo en un exe con este código:
from distutils.core import setup
import py2exe
setup(console=[''mp3player.py''])
Cuando ejecuto mp3player.exe recibo un montón de errores de importación:
C:/Users/P''sao/Downloads/dist/mp3player.exe:2: RuntimeWarning: import display: N
o module named _view
(ImportError: No module named _view)
C:/Users/P''sao/Downloads/dist/mp3player.exe:2: RuntimeWarning: import draw: No m
odule named _view
(ImportError: No module named _view)
C:/Users/P''sao/Downloads/dist/mp3player.exe:2: RuntimeWarning: import image: No
module named _view
(ImportError: No module named _view)
C:/Users/P''sao/Downloads/dist/mp3player.exe:2: RuntimeWarning: import pixelcopy:
No module named _view
(ImportError: No module named _view)
C:/Users/P''sao/Downloads/dist/mp3player.exe:2: RuntimeWarning: import transform:
No module named _view
(ImportError: No module named _view)
¿Alguien sabe cómo arreglar esto?
Y cuando compilo todo, obtengo este error:
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'']
Tuve el mismo problema antes y encontré la respuesta para resolverlo por mi cuenta:
Después de algunas semanas (ya tuve este problema antes) ¡me complace decir que resolví este problema! :)
Primera parte de mi problema ( http://i.stack.imgur.com/WpkjR.png ): Lo resolví editando la secuencia de comandos setup.py añadiendo una parte de "exclusión". ¡Eso resultó en la creación exitosa de archivos ejecutables!
Script setup.py modificado:
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"],
}
}
)
Por lo tanto, si tiene problemas similares, simplemente coloque los módulos "faltantes" en esta línea "excluyente".
Segunda parte:
Después de que tuve éxito en la creación de un archivo ejecutable, tuve el siguiente problema: " La aplicación ha solicitado que el Runtime lo termine de manera inusual. Póngase en contacto con ... " . Después de días y días de buscar y pensar cómo resolver este otro problema, encontré la manera de hacerlo. No podía creer que el problema fuera tan absurdo. El problema estaba en mi código, con la definición de fuente:
font1 = pygame.font.SysFont(None, 13)
Después de cambiar " Ninguno " a algún nombre de fuente del sistema (por ejemplo, "Arial" (debe ser una cadena)) y compilar, ¡no podía creer que mi archivo .exe funcionara!
font1 = pygame.font.SysFont("Arial", 13)
Por supuesto, puede usar su propia fuente, pero debe especificar su ruta y definirla en su programa.
Entonces, para todos los que están experimentando este problema, intenten estos pasos y espero que tengan éxito. Realmente espero que esto te ayude, porque he perdido días y semanas tratando de resolver estos problemas. Incluso intenté hacer mi archivo .exe con todas las versiones de python y pygame, con muchos otros .exe constructores y scripts de configuración, pero sin suerte. Además de estos problemas, tuve muchos otros problemas antes, pero encontré respuestas para ellos en .com.
Estoy feliz de haber encontrado una manera de resolver estos problemas y de ayudarte si te enfrentas a los mismos.
Pequeños consejos (cosas que también he hecho):
Primero: actualice su biblioteca de Microsoft Visual C ++ a la última.
2º: si tiene imágenes o fuentes similares que necesita su programa ejecutable, inclúyalos a la carpeta dist (donde se ha creado su archivo .exe).
3ro: cuando esté haciendo su archivo .exe, incluya todos los archivos necesarios en la carpeta donde está su script setup.py (todos los archivos y directorios que usa su script principal).
Utiliza Python 2.7 x64 , pygame y py2exe .