Ejecutar programas de Python

Un programa de Python es un fichero de texto plano con la extensión .py (o .pyw como se comenta al final de esta lección). Se puede crear un programa de Python con cualquier editor de texto plano, pero se recomienda utilizar editores de programación que incluyen herramientas que facilitan la escritura de programas, como IDLE o Visual Studio Code.

En estos apuntes se recomienda desde el curso 2018/19 el uso de Visual Studio Code. Por ello, los ejemplos de programas o las soluciones de los ejercicios se muestran en los apuntes con fondo negro y texto en colores, imitando el interfaz de Visual Studio Code.

En esta lección se comentan las diferentes formas posibles de ejecutar un programa de Python:

Ejecutar programas en ventana de terminal

Para ejecutar un programa en una ventana de terminal, es necesario estar situado en el directorio en el que se encuentra el programa.

Abrir la ventana de terminal en Windows

Puede abrir una ventana de terminal o de PowerShell de varias maneras, que se muestran a continuación. La primera de ellas es más cómoda porque abre la ventana de terminal directamente en la carpeta en la que se encuentra el programa y no es necesario escribir comandos cd para desplazarse hasta ella, como ocurre en las dos siguientes formas.

Ejecutar el programa

Una vez abierta la ventana de terminal en el directorio en el que se encuentra el programa, puede ejecutar el programa de varias formas. En los ejemplos siguientes, se ejecuta un programa prueba.py en la carpeta pruebas que escribe ¡Hola, mundo! en la pantalla.


Por otro lado, como el instalador de Python registra la extensión .py, puede ejecutar un programa de Python en Windows haciendo doble clic sobre él en el explorador de Windows. El problema es que los programas se ejecutan en una ventana de MS-DOS que se abre al iniciarse el programa y que se cierra cuando el programa termina. Para evitar que los programas terminen, puede añadir una última línea con la función input() que, como se explica en la lección sobre la entrada por teclado, se queda esperando a que pulsemos la tecla Intro. Al pulsar Intro, la ventana se cerrará.

El inconveniente de esta solución es que cuando se ejecuta el programa en IDLE, el programa también se queda esperando que pulsemos Intro y es fácil olvidar hacerlo. Si no pulsamos Intro, al ejecutar un segundo programa, IDLE sigue esperando que pulsemos Intro para el primer programa y da la impresión de no funcionar correctamente. En general, antes de ejecutar un programa, hay que comprobar que en la ventana principal de IDLE el cursor esté visible junto al prompt >>>.

Ejecutar programas en IDLE

IDLE permite escribir y ejecutar programas de Python. los programas se escriben en ventanas secundarias y el resultado de la ejecución se muestra en la ventana principal de IDLE, como se comenta en la lección IDLE, entorno de desarrollo.

Ejecutar programas en entorno interactivo

Es posible ejecutar programas desde un entorno interactivo, recurriendo a la función exec(), como muestra el siguiente ejemplo.

Python 3.7.2 (tags/v3.7.2:93affc0492, Dec 23 2018, 23:09:28) [NSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exec(open("ejemplo.py").read())

Diferencia entre .py y .pyw

Los programas Python pueden tener dos extensiones: .py y .pyw. La más utilizada es la primera, .py.

Si se ejecutan desde IDLE, no hay diferencia entre ambas extensiones.

Pero si se ejecutan desde un terminal o haciendo doble clic sobre los ficheros, entonces sí que hay diferencias. Los archivos .py son ejecutados por python.exe, mientras que los archivos .pyw son ejecutados por pythonw.exe. La principal diferencia es que python.exe crea una ventana de terminal (o aprovecha la ventana de terminal desde la que se ejecuta el programa), ventana que permite pedir valores al usuario o imprimir mensajes, mientras que pythonw.exe no crea ninguna ventana de terminal.

Solamente se debe utilizar la extensión .pyw si el programa crea y gestiona su propia ventana de interfaz de usuario o si no queremos ni pedir datos al usuario ni mostrarle ninguna salida del programa. En caso contrario, es mejor utilizar la extensión .py.

Otra diferencia es que python.exe ejecuta los programas de forma síncrona, es decir, que en un terminal no se puede ejecutar un nuevo programa .py hasta que ha terminado el programa anterior, mientras que pythonw.exe ejecuta los programas de forma asíncrona, es decir, que se pueden ir ejecutando nuevos programas aunque los anteriores no hayan terminado de ejecutarse.