Ejecutable a partir de un archivo Python
Resuelto[Dal] Mensajes publicados 6122 Fecha de registro Estado Colaborador Última intervención -
Hola,
Estaba pensando en crear un ejecutable de un código Python para Windows, para no tener que abrir PyCharm. Encontré esto CX FREEZE, lo he instalado correctamente en el símbolo del sistema de Windows, pero no sé dónde crear el archivo Python "setup.py": ¿en PyCharm o en Windows? ¡Gracias por tu ayuda!
11 respuestas
Hola,
Nadie se burla, los 80 posts no tratan sobre Python, sino sobre el uso del terminal, la navegación por la estructura de directorios y la nomenclatura de archivos.
Evita los espacios en los nombres de archivos o lo especificas con comillas simples '' :
C:\Users\quent\PycharmProjects\pythonProject\'LES_ ENSEMBLES.py'
Otro consejo :
Tu terminal, independientemente del sistema operativo, maneja el arrastrar y soltar, lo que permite desde tu navegador de archivos obtener la ruta absoluta en tu terminal.
Hola Quentin
El archivo setup.py es un archivo que se coloca en la raíz de tu proyecto, propio de setuptools, que permite generar un paquete python (.whl, .egg) y/o linux (.rpm, .deb).
Hoy en día, se está reemplazando cada vez más en favor de poetry mucho más moderno, práctico y elegante (que se basa en el archivo pyproject.toml).
Para que te hagas una idea sobre estas diferentes tecnologías, puedes echar un vistazo a esta página y esta página.
No conozco cx-freeze y no sé si impone usar setuptools. Al no ser un usuario de Windows, realmente no me interesa la generación de ejecutables independientes, pero sé que la gente también utiliza con frecuencia pyinstaller o py2exe. Algunos ejemplos de uso aquí. Típicamente, si tu script python consiste en un solo archivo, puedes contentarte con :
pyinstaller yourfile.py -F --onefile
Buena suerte
Es raro todo esto, da la impresión de que no entiendes todo lo que te contamos: en tu imagen, vemos un camino con py.exe. ¿Entonces ya tienes un exe que corresponde a un archivo py.py? ¿Es eso o no?
Por otro lado, ¿entendiste que, de todas formas, no necesitas crear un .exe?
Yo no utilizo Pycharm, sino Idle como IDE, pero necesariamente creas un archivo toto.py (por ejemplo) en un directorio. Y para ejecutarlo, basta con hacer doble clic en el archivo en el explorador:
- ¿Tiene sentido la ruta de la que hablas en tu otro PC?
- En el peor de los casos, no uses el script de Phil y escribe directamente el comando con los argumentos adecuados (ver #1) desde PowerShell.
- La ventaja de PowerShell (comparado con los comandos ms-dos) es que proporciona la autocompletación, es decir, cuando escribes un comando, la tecla de tabulación permite completar el argumento que estás escribiendo. Por lo tanto, es un medio efectivo para escribir más rápida y fácilmente, y sin errores, la ruta de un archivo.
¿Por qué copiaste mi archivo en el otro PC?
¡No has leído todo lo que te hemos contado desde el principio!
En tu PC donde creaste tu código Python:
un archivo Python toto.py (por ejemplo)
mi .bat para lanzar pyinstaller y crear un .exe en una carpeta con
todos los demás archivos útiles como podemos ver en la imagen que publiqué
el 27/12 a las 12:22
En el otro PC:
Copias ese famoso carpeta, la abres y haces doble clic en toto.exe
No más, no menos ...
Hola,
Recomendaría la instalación y el uso de auto-py-to-exe que utiliza PyInstaller
Ofrece una interfaz gráfica basada en Chrome, que permite generar su paquete exe en unos pocos clics
Lo he probado en Windows, macOS y Linux sin problemas.
https://pypi.org/project/auto-py-to-exe/
Hola Diablo,
¡Uy uy uy!
No compliques las cosas más de lo que ya son :-) :-) :-)
Si has leído toda esta serie de mensajes, habrás visto que no es
simple
Sobre todo porque Quentin parece haber llegado al final:
Al mirar la imagen publicada ayer a las 19:10, vemos las carpetas
dist, build y el archivo LES_ENSEMBLES.spec creado por pyinstaller
Entonces, en dist, seguro que hay una carpeta LES_ENSEMBLES que contiene
todos los archivos útiles, incluido LES_ENSEMBLES.exe
Esperemos su respuesta a mi pregunta ...
Extraño, extraño ............
Sería necesario hacer otra prueba
1_ eliminas las carpetas build y dist y también el archivo LES_ENSEMBLES.spec
2_ abres el símbolo del sistema de Windows
3_ Escribes cd ruta\hacia\la\carpeta\del\py
4_ Escribes
ruta\hacia\la\carpeta_pyinstaller\pyinstaller LES_ENSEMBLES.py
No olvides quitar la copia del .py que has colocado en la carpeta donde
está pyinstaller
Y vemos qué resulta ...
Hola,
Aun sin crear un ejecutable, se puede ejecutar un programa haciendo doble clic en el archivo .py en el explorador ...
Utilizo pyinstaller para pasar un código a alguien que no ha instalado el entorno de Python en su PC, por lo que necesita un .exe ya que no tiene el intérprete para ejecutar directamente un .py
Para crear un exe, me hice un pequeño archivo .bat :
echo off set /p py_dir=Directorio del programa : cd %py_dir% set /p py_file=Nombre del programa : "C:\Program Files (x86)\Python\Scripts\pyinstaller" %py_file% -p C:\Phil\Dev\Python\projects\base_lib pause
(El directorio que sigue a la opción -p contiene archivos importados potencialmente en mi código principal)
Hola Quentin
- Ver aquí. El comando set /p permite inicializar una variable de manera interactiva.
- Cuando ejecutas el script de Phil_1857, solo tienes que responder a las preguntas ("Directorio del programa :" y "Nombre del programa :") para inicializar respectivamente las variables py_dir y py_file.
- Sin embargo, este script puede requerir algunas correcciones
- el camino hacia pyinstaller.exe, para que sea correcto con respecto a tu instalación ;
- el/los camino/s detrás de la opción -p si tu programa depende de imports específicos -- si no los tienes, puedes simplemente eliminar esta opción.
- El punto importante es determinar qué opciones de pyinstaller.exe son relevantes en tu caso. Luego, queda a tu elección escribir un script en el espíritu del de Phil_1857 para facilitarte la vida.
- ¿Tienes todas tus respuestas? Si es así, ¿puedes marcar el tema como resuelto ?
Buena suerte
sí, siempre que cambies la ruta hacia pyinstaller como indica
Mamiemando en su último mensaje
Pero espero que hayas comprendido bien que puedes ejecutar tu código
sin usar pyinstaller haciendo doble clic en el .py en el explorador
echo off set /p py_dir=C:\Users\quent\PycharmProjects\pythonProject\LOS CONJUNTOS : cd %py_dir% set /p py_file=PycharmProjects : "C:\Program Files (x86)\Python\Scripts\pyinstaller" %py_file% -p C:\Users\quent\Dev\Python\projects\base_lib pause Hay una confusión, Quentin. Quizás no has comprendido bien el mensaje #5. No debes corregir las líneas set /p: lo que está escrito detrás es el mensaje de pregunta que plantea el script cuando lo ejecutas (es lo que ves en las capturas de pantalla publicadas por Phil en #6).
- Lo que escribes por teclado en respuesta se almacena en la variable. Por lo tanto, es normal que no aparezca ninguna ruta.
- Lo que has escrito probablemente tendría sentido sin la opción /p, para imponer el valor de las variables py_dir y py_file.
A continuación, nada indica que en tu caso tengas una carpeta base_lib. Y nada indica que realmente necesites pasar la opción -p. Ahí es donde Phil coloca en su ordenador algunos de sus paquetes de Python que le gusta usar, pero nada indica que ese sea tu caso. Es muy probable que en tu caso no necesites la opción -p. Por eso te remito a la documentación de las opciones de pyinstaller para entender bien lo que hacen.
Buena suerte
- Perfecto, el script parece correcto ahora :-) En la ventana negra que has reportado en la captura de pantalla, solo te queda escribir, después de la primera pregunta, la carpeta en la que se localiza tu archivo ".py", presionar enter, y luego, después de la segunda pregunta, el nombre del mencionado archivo ".py".
- Lo importante es que este script no es en absoluto obligatorio. Phil te lo propuso porque en su caso lo encuentra práctico, y piensa que tal vez sea el caso para ti también. Pero, fundamentalmente, lo único que realmente importa es invocar pyinstaller.exe con los parámetros correctos.
Buena suerte
De hecho, cuando ingreso la ruta de la carpeta donde está el archivo .py, me responde "ruta no encontrada".
La ruta correcta es esta:

¡No es el mismo donde está instalado Pycharm! Hay que decir que este archivo .py fue creado durante mi primera instalación de Pycharm, ¡lo que puede explicar esto!
De lo contrario, para mí es más fácil, después de haber instalado pyinstaller en cmd, hacer clic en mi archivo .py que así se abre directamente.
Sí, eso es: evita escribir el comando a mano con la ruta hacia pyinstaller y la ruta hacia el archivo + nombre del archivo .py
De todos modos, elimina el -p al final.
Bueno, aquí está: el comando dir te da la lista de los archivos y carpetas contenidos en
la carpeta actual
(aquí: C:\WINDOWS\System32 porque escribes el comando mientras estás en
esta carpeta)
Solo tienes que hacer cd ruta_donde_se_encuentra_el_codigo_Python
luego hacer un dir
verás si en la lista que se muestra aparece el archivo LES_ENSEMBLES.py
(¿por qué un nombre de archivo en mayúsculas, por cierto?)
En ese momento hay que escribirlo como se debe (respetando las minúsculas y mayúsculas). Seguimos esperando que nos copies y pegues el resultado del comando dir (en el directorio adecuado) para ver qué falla. Una cosa que probablemente puedas hacer es utilizar PowerShell en lugar de los comandos de MS-DOS. Al igual que un terminal en Linux, admite la autocompletación, es decir, que al usar la tecla "tabulación", completa los nombres de carpetas/archivos.
¡Eres un cómico muy gracioso! ¡Abre los ojos!
Yo veo un archivo
LES_ ENSEMBLES.py
y no
LES_ENSEMBLES.py
y en el explorador de Windows, ¿no te saltaba a los ojos?
Y quita un poco de todos esos archivos .spec inútiles
Y adquiere también un buen hábito:
usar guiones bajos ( _ ) en lugar de espacios en los nombres de archivos:
crear_un_pdf.py
Buenas noches.
Aun así, ¿cómo es posible que alguien que ha publicado más de 8,000 mensajes en un foro informático, por lo tanto, habiendo asistido a otros en este campo, no sepa cómo moverse en una estructura de directorios en una consola de dos, ni colocar en el lugar correcto de esa estructura los archivos necesarios para el buen funcionamiento de un ejecutable, lo cual es un poco lo básico de la informática?
:-/
No nos burlamos
Por otro lado, lo que es seguro es que no lees atentamente lo que te
respondemos, para intentar entender lo que está pasando
Una vez más:
¡Elimina esos malditos espacios de tus nombres de archivos!!
Renombra
LES_ ENSEMBLE.py
(¡hay un espacio entre LES_ y ENSEMBLES!!)
a
LES_ENSEMBLES.py
Y así irá mucho mejor
No vemos mucho el interés de nombrar un archivo
LES + guion bajo + espacio + ENSEMBLES
Quentin no parece estar familiarizado con la línea de comandos.
Para resumir y aclarar para Quentin, en esta publicación de Quentin:
Podemos ver que:
cd C:\Users\quent\PycharmProjects\pythonProject funciona y permite que Quentin se mueva a "C:\Users\quent\PycharmProjects\pythonProject".
Y que:
C:\Users\quent\PycharmProjects\pythonProject4\venv\Scripts\pyinstaller LES_ENSEMBLES.py efectivamente lanza pyinstaller que debe estar en el directorio "C:\Users\quent\PycharmProjects\pythonProject4\venv\Scripts\pyinstaller", pero su ejecución falla con un error:
1038 INFO: PyInstaller: 6.3.0 1039 INFO: Python: 3.12.0 1064 INFO: Platform: Windows-10-16.0.19645-SPe 1065 INFO: wrote C:\Users\quent\PycharmProjects\pythonProject\LES_ENSEMBLES.spec Script 'C:\Users\quent\PycharmProjects\pythonProject\LES_ENSEMBLES.py' not found La ejecución del programa pyinstaller falla porque el directorio "C:\Users\quent\PycharmProjects\pythonProject\" no contiene un archivo "LES_ENSEMBLES.py".
Partiendo de la hipótesis de que "C:\Users\quent\PycharmProjects\pythonProject\" contiene "LES_ ENSEMBLES.py" (con un espacio después del guion bajo) y no "LES_ ENSEMBLES.py", la secuencia correcta de comandos, después de abrir la línea de comandos sería:
cd C:\Users\quent\PycharmProjects\pythonProject C:\Users\quent\PycharmProjects\pythonProject4\venv\Scripts\pyinstaller "LES_ ENSEMBLES.py" Si Quentin ha renombrado su archivo "LES_ ENSEMBLES.py" a "LES_ ENSEMBLES.py", sin espacio, como se aconseja, la secuencia correcta de comandos, después de abrir la línea de comandos sería:
cd C:\Users\quent\PycharmProjects\pythonProject C:\Users\quent\PycharmProjects\pythonProject4\venv\Scripts\pyinstaller LES_ENSEMBLES.py @quentin2121 EstadoMiembro
puedes pegar texto en la línea de comandos (clic derecho - pegar). Hazlo para evitar errores de escritura.
En su mensaje:
@Diablo76 EstadoMiembro
había propuesto el uso de una interfaz gráfica que permite hacer funcionar PyInstaller: auto-py-to-exe
Esto es sin duda más adecuado para las personas que no están familiarizadas con la línea de comandos.
Como hay 87 respuestas, también se puede consultar la documentación:
https://www.pyinstaller.org/en/stable/usage.html
PyInstaller analiza myscript.py y:
En la carpeta dist encuentras la aplicación empaquetada que distribuyes a tus usuarios.
- Escribe myscript.spec en la misma carpeta que el script.
- Crea una carpeta build en la misma carpeta que el script si no existe.
- Escribe algunos archivos de registro y archivos de trabajo en la carpeta build.
- Crea una carpeta dist en la misma carpeta que el script si no existe.
- Escribe la carpeta ejecutable myscript en la carpeta dist.
-
Estilo de numeración de lista
a las 17:51 -
No puedo volver a poner los cojines.
a las 17:41 -
Imposible agregar una cuenta de correo en outlook.
a las 17:20 -
¿vale la pena la aplicación autodoc?
a las 17:07 -
¿por qué los sitios web gubernamentales franceses son hackeados?
a las 16:33 -
Atlantis version light, la alternativa gratuita a word para pc antiguos
a las 16:17 -
Imposible iniciar windows 7
a las 15:34 -
Imposible centrar la pantalla en google chrome
a las 15:15 -
Teclado en la red x
a las 15:01 -
Escanear un código qr con una sola mano se vuelve más fácil en android
a las 14:51

