Crear un archivo ejecutable (.exe) a partir de un script en Python es una forma efectiva de distribuir aplicaciones a usuarios que no tienen Python instalado en su sistema. Para generar un ejecutable, puedes utilizar herramientas como PyInstaller o cx_Freeze. Estas herramientas empaquetan tu script y todas sus dependencias en un solo archivo, facilitando la distribución de tu aplicación.
PyInstaller es una de las herramientas más populares para convertir scripts de Python en ejecutables. Para instalarla, utiliza pip:
pip install pyinstaller
Una vez que tengas PyInstaller instalado, puedes generar un ejecutable utilizando el siguiente comando:
pyinstaller --onefile tu_script.py
Explicación:
--onefile
: Indica a PyInstaller que empaquete todo en un solo archivo ejecutable.
tu_script.py
: Es el archivo Python que deseas convertir en un ejecutable.
Este comando creará una carpeta dist
donde encontrarás el archivo ejecutable generado.
Ejemplo:
Supongamos que tienes un script llamado hola_mundo.py
con el siguiente contenido:
print("¡Hola, mundo!")
Para convertirlo en un ejecutable, simplemente ejecuta:
pyinstaller --onefile hola_mundo.py
Después de que el proceso termine, encontrarás el ejecutable hola_mundo.exe
en la carpeta dist
.
.spec
Si necesitas más control sobre cómo se genera el ejecutable, puedes utilizar un archivo de especificación .spec
, que se genera automáticamente la primera vez que ejecutas PyInstaller. Este archivo te permite personalizar varios aspectos, como la inclusión de archivos adicionales, iconos, y más.
Ejemplo básico de un archivo .spec
:
# hola_mundo.spec
block_cipher = None
a = Analysis(['hola_mundo.py'],
pathex=['/ruta/a/tu/script'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='hola_mundo',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='hola_mundo')
Otra herramienta para generar ejecutables es cx_Freeze. Aunque menos popular que PyInstaller, es potente y soporta múltiples plataformas.
Instalación:
pip install cx-Freeze
Uso básico:
Primero, crea un archivo setup.py
con el siguiente contenido:
from cx_Freeze import setup, Executable
setup(
name = "hola_mundo",
version = "1.0",
description = "Mi primer ejecutable",
executables = [Executable("hola_mundo.py")]
)
Luego, ejecuta el siguiente comando en la terminal:
python setup.py build
Esto generará una carpeta build
que contendrá el ejecutable y todas las dependencias necesarias.
--icon
en PyInstaller o especificando icon="ruta_al_icono.ico"
en cx_Freeze.
--noconsole
en PyInstaller o configurar base="Win32GUI"
en cx_Freeze.
Ejemplo en PyInstaller:
pyinstaller --onefile --noconsole --icon=mi_icono.ico tu_script.py
1. Generar un ejecutable en modo consola:
pyinstaller --onefile mi_programa.py
2. Generar un ejecutable con un icono personalizado:
pyinstaller --onefile --icon=mi_icono.ico mi_programa.py
3. Crear un ejecutable con cx_Freeze:
from cx_Freeze import setup, Executable
setup(
name = "mi_programa",
version = "1.0",
description = "Descripción del programa",
executables = [Executable("mi_programa.py", base="Win32GUI", icon="mi_icono.ico")]
)
4. Generar un ejecutable sin mostrar la consola:
pyinstaller --onefile --noconsole mi_programa.py
Para más información sobre cómo generar ejecutables y las opciones avanzadas disponibles, puedes consultar la documentación oficial de PyInstaller y la documentación oficial de cx_Freeze.
Jorge García
Fullstack developer