Ejecutable a partir de un archivo Python

Resuelto
quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención   Ambassadeur -  
[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

Diablo76 Mensajes publicados 344 Fecha de registro   Estado Miembro Última intervención   140
 

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.

2
mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   7 937
 

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

1
quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención   1 312
 

Hola Mamiemondo,

Gracias por tu respuesta. He instalado en Pycharm el comando:

pip install -U pyinstaller

¡Ahora puedo ejecutar mis archivos de Python con un solo clic desde el explorador!

0
Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   169
 

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:

Una vez más, un .exe es útil si quieres ejecutar tu código en un PC donde no esté instalado Python.

1
quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención   1 312
 

He intentado el ejecutable en otro pc, recibo un mensaje de error que indica que la ruta no es correcta para el directorio del programa, ¡aunque la indico bien!

C:\Users\quent\PycharmProjects\pythonProject

0
quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención   1 312 > quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención  
 

@ Phil :           ¿Tu archivo lleva la extensión .bat o .exe?

0
mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   7 937 > quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención  
 
  • ¿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.
0
quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención   1 312 > mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención  
 

Hola Mamiemondo,

El camino tiene sentido, sí, pero como no tengo instalado Python, ni PyCharm, entiendo que el camino no llegue a ningún lado.

Lo intentaré con PowerShell, ¡"py installer"!

0
Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   169 > quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención  
 

¿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 ...

1
Diablo76 Mensajes publicados 344 Fecha de registro   Estado Miembro Última intervención   140
 

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/

1
Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   169
 

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 ...

0
quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención   1 312 > Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención  
 

Hola Phil,

En la carpeta dist, no hay nada dentro.

0
Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   169 > quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención  
 

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 ...

0
quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención   1 312 > Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención  
 
0
Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   169 > quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención  
 

'C:\Users\quent\PycharmProjects\pythonProject\LES_ENSEMBLES.py' no encontrado

eso significa que tu archivo .py no está en

C:\Users\quent\PycharmProjects\pythonProject

¿Pero tú habías dicho que estaba allí dentro?

0
Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   169
 

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)

0
quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención   1 312
 

¿En qué línea del código eliges la ruta completa del archivo Python correspondiente?

0
mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   7 937 > quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención  
 

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

0
Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   169
 

La línea 3 solicita el directorio del programa:

la línea 4 cambia de directorio para colocarse allí

La línea 6 solicita el nombre del programa:

¡Y ahí vamos!

0
quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención   1 312
 

En resumen, ¿puedo copiar y pegar tu código en .bat?

0
mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   7 937 > quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención  
 

¿Has leído #5? :-)

0
Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   169
 

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

0
quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención   Ambassadeur 1 312
 
  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

0
mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   7 937
 

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

0
quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención   1 312 > mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención  
 


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


pause

0
mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   7 937 > quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención  
 
  • 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

0
quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención   1 312 > mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención  
 

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.

0
Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   169
 

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.

0
Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   169
 

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?)

0
quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención   1 312
 

El archivo LES_ENSEMBLES.py está en la carpeta

¡En mayúsculas, es para poder localizarlo fácilmente!

0
mamiemando Mensajes publicados 33228 Fecha de registro   Estado Moderador Última intervención   7 937 > quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención  
 

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.

0
Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   169 > quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención  
 

¡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

2
souli > Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención  
 

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?

:-/

1
Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   169 > quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención  
 

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

1
[Dal] Mensajes publicados 6122 Fecha de registro   Estado Colaborador Última intervención   1 108
 

Quentin no parece estar familiarizado con la línea de comandos.

Para resumir y aclarar para Quentin, en esta publicación de Quentin:

https://forums.commentcamarche.net/forum/affich-37965889-executable-a-partir-d-un-fichier-python#p37975233

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.

0
[Dal] Mensajes publicados 6122 Fecha de registro   Estado Colaborador Última intervención   1 108
 

En su mensaje:

https://forums.commentcamarche.net/forum/affich-37965889-executable-a-partir-d-un-fichier-python#p37974657

@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.

2
quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención   1 312
 

Gracias, ¡eso funcionó, POR FIN!

¿Es la carpeta donde está LES_ENSEMBLES.py la que hay que copiar para ejecutarlo en un ordenador donde no hay python instalado?

He verificado, LES_ENSEMBLES está en .py, ¿no se ha convertido en .exe?

0
Phil_1857 Mensajes publicados 1883 Fecha de registro   Estado Miembro Última intervención   169 > quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención  
 

Mira nuestras respuestas más arriba

¡Ya te lo hemos explicado!

En la carpeta que contiene el .py, hay una carpeta que contiene otra carpeta

que contiene el .exe

Revisa nuestras respuestas y sabrás qué hacer

0
[Dal] Mensajes publicados 6122 Fecha de registro   Estado Colaborador Última intervención   1 108 > quentin2121 Mensajes publicados 9063 Fecha de registro   Estado Miembro Última intervención  
 

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:

  • 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.
En la carpeta dist encuentras la aplicación empaquetada que distribuyes a tus usuarios.
1