script programa ejecutable cx_freeze crear convertir python tkinter compilation exe python-3.3

python - programa - cx_freeze



¿Cómo compilo mi aplicación Python 3 en un archivo.exe? (4)

¿Cómo convierto mi aplicación Python a un .exe ? Hice un programa con tkinter y me preguntaba cómo hacer posible que otros lo usen. Yo uso Python 3.3. Busqué un poco pero no pude encontrar nada.


He encontrado PyInstaller para trabajar mejor. Tiene muchas opciones, por ejemplo, puede empaquetar todo en un archivo exe.

Me encanta usarlo junto con Cython para la velocidad.



Utilice Pyinstaller . Después de instalarlo, abra el terminal en el directorio donde reside su proyecto.

  1. $ pyinstaller script1.py script2.py ... (donde script1, script2, etc. son todos los scripts utilizados en su proyecto).

  2. Después de completar el comando, abra la carpeta dist e ingrese el subdirectorio. Allí encontrarás un ejecutable.

Espero eso ayude.


cx_Freeze hace esto pero crea una carpeta con muchas dependencias. py2exe ahora hace esto y, con la opción --bundle-files 0, crea solo un EXE, que es probablemente la mejor solución para su pregunta.

ACTUALIZACIÓN: Después de encontrar módulos de terceros que py2exe tuvo problemas para "encontrar", me moví a pyinstaller como kotlet schabowy sugiere a continuación. Ambos tienen una amplia documentación e incluyen .exes que puede ejecutar con parámetros de la línea de comandos, pero todavía tengo que compilar una secuencia de comandos que Pyinstaller no puede manejar sin depurar o rascarse la cabeza.

Aquí hay una función de conveniencia simple que utilizo para crear un archivo .exe con mis valores predeterminados del intérprete (por supuesto, un lote o similar también estaría bien):

import subprocess,os def exe(pyfile,dest="",creator=r"C:/Python34/Scripts/pyinstaller.exe",ico=r"C:/my icons/favicon.ico",noconsole=False): insert="" if dest: insert+=''--distpath ""''.format(dest) else: insert+=''--distpath "" ''.format(os.path.split(pyfile)[0]) if ico: insert+='' --icon="{}" ''.format(ico) if noconsole: insert+='' --noconsole '' runstring=''"{creator}" "{pyfile}" {insert} -F''.format(**locals()) subprocess.check_output(runstring)