Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Crear .EXE de un .PY
#11
Buenas, al fin he solucionado los problemas que tenia al empaquetar un .exe, me crea el ejecutable y me surge un nuevo problema. Desde la consola de comandos escribo la ruta y ejecuta la aplicación sin problemas, pero si hago doble clic se abre y se cierra al instante. Alguien tiene alguna idea de que puede estar causando el error? No me muestra ningún mensaje ni en la consola ni nada. Este es el setup.py que utilizo para generar el .exe
Código:
import os
from cx_Freeze import setup, Executable

os.environ['TCL_LIBRARY'] = "C:\\Users\\Alfredo\\Anaconda3\\tcl\\tcl8.6"
os.environ['TK_LIBRARY'] = "C:\\Users\\Alfredo\\Anaconda3\\tcl\\tk8.6"

buildOptions = dict(
   packages = ['events', 'pandas', 'datetime','matplotlib', 'numpy'], #numpy
   excludes = [],
   include_files=['tcl86t.lib', 'tk86t.lib', 'images', 'Usuarios.xlsx', 'platforms', 'mkl_intel_thread.dll']
)

import sys
base = 'Win32GUI' if sys.platform=='win32' else None

executables = [
   Executable('main.py', icon = "images/icon.ico") #base=base
]

setup(name='editor',
     version = '1.0',
     description = '',
     options = dict(build_exe = buildOptions),
     executables = executables)
Responder
#12
Al parecer eso puede ocurrir si inicias tu aplicación con la siguiente comprobación:

  1. if __name__ == "__main__":
  2. # ...


Removiendo el condicional debería funcionar.
Responder
#13
No tengo puesto ese condicional Francisco, sabes que otra cosa podría ser?

EDITO: Acabo de comentar las lineas que pintan el gráfico y si que funciona:

#Genera el grafico y lo muestra en el canvas
'''file = pd.read_excel('Usuarios.xlsx')
df = pd.DataFrame(file)
grp=df.groupby("Indice")
plot = grp.size().plot(kind='bar', title="Titulo").set_ylabel("Users")
self.fig = plot.get_figure()
#Establece el tamaño del grafico en pulgadas
self.fig.set_size_inches((self.graphic_w ,self.graphic_h))
self.fig_photo=events.draw_figure(self.graphic_canvas, self.fig, (30, 30)) '''

Como anotación diré que no estoy utilizando matplotlib, genero el gráfico con el mismo data frame de Pandas. Debería usar matplotlib?
Responder
#14
Podría ser que la ruta relativa de Usuarios.xlsx no esté funcionando. Intenta esto:

  1. from os import getcwd
  2. import os.path
  3. # ...
  4. file = pd.read_excel(os.path.join(os.getcwd(), "Usuarios.xlsx"))


Aunque solo estoy suponiendo. Debe haber algún error que se está generando pero por alguna razón no se muestra.
Responder
#15
Nada Francisco, no se soluciona el error. Es muy raro porque genero el exe con CX_FREEZE y le pongo precisamente para que muestre la consola para visualizar los posibles errores. El caso es que cuando termina de construir el exe, voy a la carpeta donde lo ha generado, escribo "main.exe" y lo ejecuta sin errores ni problemas. Pero cuando hago doble clic a main.exe no funciona.Ya no se que puede ser. Y no tengo ni idea de que error buscar en internet para ver posibles soluciones.

EDITO:
Buenas Francisco, a ver acabo de especificar un poco mas mi error, después de generar el .Exe, ejecuto main.exe con el prompt de Anaconda como he mencionado antes, y ahora en vez de dar doble clic intento ejecutarlo igual con el símbolo del sistema de windows y voilá, ahora me vuelve a mostrar el error: Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll

Este error lo solucioné incluyendo en el archivo setup.py el archivo mkl_intel_thread.dll pero ahora me sigue dando problemas, no se si tengo que instalar algo, actualizar algo o copiar ese archivo en un lugar en concreto
Responder
#16
Hola Alfredo. Tienes que asegurarte que todas las dependencias de tu ejecutable tienen que estar en la misma ruta que él.
Responder
#17
Te recomiendo Pyinstaller, contiene muchas opciones, como por ejemplo, poner iconos, usar UPX, etc. Más info en su documentación.
Responder
#18
buen post
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)