Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Yidu en 14 Enero 2017, 21:16 pm



Título: Error al importar modulos standard con cx_freeze [PYTHON]
Publicado por: Yidu en 14 Enero 2017, 21:16 pm
Hola de nuevo!

Estoy haciendo alguna prueba con cx_freeze. Osea, para convertir archivos py a exe.

Con scripts sencillos me funciona. Por ejemplo (prueba_2.py):

Código
  1. for i in range(1, 100):
  2.    print(i)
  3. input()

Luego creo el script de cx_freeze (setup.py):

Código
  1. from cx_Freeze import setup, Executable
  2.  
  3.  
  4. setup(name = "Plantilla",
  5.      version = "0.1",
  6.      description = "Crear ejecutable",  
  7.      executables = [Executable("prueba_2.py")])

Esto me crea la carpeta build dentro del directorio de python. Y dentro de la carpeta build tengo el ejecutable prueba_2.exe y alguna carpeta mas.

El problema viene, cuando en algun script que creo, importo algun modulo. Por ejemplo, pickle. Creia que con esto bastaba:

Código
  1. from cx_Freeze import setup, Executable
  2.  
  3. build_exe_options = {"packages": ["pickle"]}
  4.  
  5. setup(name = "Plantilla",
  6.      version = "0.1",
  7.      description = "Crear ejecutable",  
  8.      options = {"build_exe": build_exe_options},
  9.      executables = [Executable("ejemplo.py")])

Pero no funciona. He leido algunos tutoriales pero sigue sin funcionar. Para construir el exe hago la tipica llamada:

Código
  1. C:\Python34>py setup.py build

Hay alguna plantilla de cx_freeze para poder utilizar los modulos standard de Python? En mi caso, la version 3.4


Título: Re: Error al importar modulos standard con cx_freeze [PYTHON]
Publicado por: PUAROT en 15 Enero 2017, 00:25 am
Cuando importas módulos lo haces de la forma:
Código:
from modulo import *

Si es así prueba a importar las partes del modulo que utilizas, aunque sean varias del estilo :
Código:
from modulo import función


Título: Re: Error al importar modulos standard con cx_freeze [PYTHON]
Publicado por: Yidu en 15 Enero 2017, 18:36 pm
Cuando importas módulos lo haces de la forma:
Código:
from modulo import *

Si es así prueba a importar las partes del modulo que utilizas, aunque sean varias del estilo :
Código:
from modulo import función


Hola!

Bueno, he importado asi los modulos por que asi lo decia la documentacion y ejemplos de cx_freeze. En cambio, en el script que queria convertir a *.exe, utilizaba el:

Código
  1. import pickle

De todas formas, pienso, que debe de ser algo que no configuro bien. Por que he visto algunos ejemplos de gente convirtiendo un juego hecho con pygame a ejecutable (exe). Y claro, el script de cx_freeze era bastante mas extenso.



Título: Re: Error al importar modulos standard con cx_freeze [PYTHON]
Publicado por: PUAROT en 15 Enero 2017, 19:45 pm
A mi me daba problema con Tkinter pero importando los módulos que necesitaba de tkinter como te indicaba antes y este script ,conseguí crear mi ejecutable:
Código:
import sys
from cx_Freeze import setup, Executable
base = None
if sys.platform == 'win32':
    base = 'Win32GUI'
options = {
    'build_exe': {
        'compressed': False,
        'includes': ['Aquí el nombre de un modulo que estaba importando creado por mi ']
    }
}

executables = [
    Executable('archivo.py', base=base)
]

setup(name='archivo',
      version='2',
      description='Prueba.',
      executables=executables,
      options=options
      )