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:
Si se ha configurado Visual Studio Code de acuerdo con la lección Configuración recomendada para VSCode, se recomienda ejecutar los programas mediante los atajos de teclado comentados en esa lección:
Si no se había abierto todavía ninguna ventana de terminal, el atajo abre una nueva ventana de terminal automáticamente. La primera vez que se abre una ventana de terminal, la ventana se abre en el directorio raíz del área de trabajo.
Para ejecutar un programa en una ventana de terminal, es necesario estar situado en el directorio en el que se encuentra el programa.
Puede abrir una ventana de terminal clásico (CMD) de varias maneras, que se muestran a continuación.
Se abrirá una ventana de CMD en el directorio del usuario. El inconveniente es que hay que desplazarse con comandos cd hasta el directorio que contiene el programa o ejecutarlo escribiendo su ruta completa.
Muestre en el Explorador de archivos de Windows la carpeta que contiene el programa, haga clic a la derecha de la ruta para que se muestre y seleccione el camino absoluto, borre el texto y escriba en su lugar cmd y pulse Intro.
Se abrirá una ventana de CMD en el directorio donde se encuentra el programa.
Puede abrir una ventana de terminal PowerShell de varias maneras, que se muestran a continuación.
Se abrirá una ventana de PowerShell en el directorio del usuario. El inconveniente es que hay que desplazarse con comandos cd hasta el directorio que contiene el programa o ejecutarlo escribiendo su ruta completa.
Muestre en el Explorador de archivos de Windows la carpeta que contiene el programa, haga Mayús+clic derecho y elija la opción "Abrir la ventana de PowerShell aquí".
Se abrirá una ventana de PowerShell en el directorio donde se encuentra 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.
C:\Users\Barto\Documents\LMSGI Barto\Python\pruebas>prueba.py
¡Hola, mundo!
C:\Users\Barto\Documents\LMSGI Barto\Python\pruebas>
C:\Users\Barto\Documents\LMSGI Barto\Python\pruebas>py prueba.py
¡Hola, mundo!
C:\Users\Barto\Documents\LMSGI Barto\Python\pruebas>
C:\Users\Barto\Documents\LMSGI Barto\Python\pruebas>python prueba.py
¡Hola, mundo!
C:\Users\Barto\Documents\LMSGI Barto\Python\pruebas>
PS C:\Users\Barto\Documents\LMSGI Barto\Python\pruebas>py prueba.py
¡Hola, mundo!
PS C:\Users\Barto\Documents\LMSGI Barto\Python\pruebas>
PS C:\Users\Barto\Documents\LMSGI Barto\Python\pruebas>python prueba.py
¡Hola, mundo!
PS C:\Users\Barto\Documents\LMSGI Barto\Python\pruebas>
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 >>>.
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.
Es posible ejecutar programas desde un entorno interactivo, recurriendo a la función exec(), como muestra el siguiente ejemplo.
Python 3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exec(open("ejemplo.py").read())
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.