Cómo ejecutar un archivo Python (.py) en Linux

enero 01, 2023 0 Comments

Archivo Python en Linux

En las listas de lenguajes de programación más populares que publican cada año siempre hay hueco para Python. Los motivos pueden ser muchos y muy variados, como por ejemplo su versatilidad o que hay mucha documentación por toda la red, pero el caso es que es una de las opciones a tener en cuenta. Con tanta fama, es probable que a veces nos envíen un archivo Python y no sepamos cómo abrirlo en Linux.

En teoría, abrir un archivo Python en Linux es una tarea sencilla, pero podemos encontrarnos con alguno que no se abra. Si está escrito desde Windows, podría no abrirse haciendo doble clic sobre el archivo .py aunque esté marcado para que se ejecute como un programa. Esto puede pasar porque no es lo mismo escribir el código desde Windows que desde Linux; no se «codifica» igual, pero no es preocupéis porque aquí vamos a explicar cómo ejecutarlos independientemente de cómo se hayan creado.

Ejecutar un archivo Python en Linux desde el terminal

Antes que nada, hablemos de algo. Linux y Windows tienen una estructura de API diferentes, y lo que se crea desde un sistema operativo podría no funcionar en otro. Es algo que no debería pasar, pero pasa. Si algo se ha escrito en, por ejemplo, Visual Studio Code de Windows, podemos volvernos locos para intentar ejecutar el archivo Python en Linux, pero la solución puede ser la más sencilla del mundo: bastaría con «recompilar» el archivo desde Linux, lo que puede ser tan sencillo como copiar todo el código, pegarlo en otro archivo y guardarlo con extensión .py desde nuestro sistema operativo basado en Linux. Con este problema resuelto, seguimos.

En Linux, lo que no suele fallar nunca es hacer las cosas con el terminal. Pare evitar un potencial peligro, merece la pena echar un vistazo al código, para lo que bastará con abrirlo con un procesador de textos como el editor de textos de GNOME o Kate. Por ejemplo, y suponiendo que no entendemos mucho de programación, sí podemos buscar «rm » para asegurarnos de que no va a borrar nada de nuestro disco duro sin nuestro permiso. Cuando estemos seguros de que no es peligroso, o si confiamos en quien nos lo ha pasado, podemos abrir el terminal y escribir «python» (sin las comillas) seguido del nombre del archivo con ruta incluida. Para no equivocarnos, merece la pena escribir «python» (o «python3») y arrastrar el archivo al terminal.

Lo bueno de hacerlo de esta manera es que, si salta alguna excepción (error), la veremos en el terminal, y podremos o bien arreglarla al desarrollador. Lo malo es que, si es una aplicación con interfaz gráfica, veremos dos ventanas, la del terminal en segundo plano y la GUI de la app en el primer plano.

El Shebang y los permisos de ejecución

Si lo que tenemos es algo que funcionará sólo con el terminal, todo esto no es necesario. Basta con hacer lo explicado en el punto anterior. El problema puede venir cuando lo que queremos es ejecutar una aplicación con interfaz de usuario. Para que se abran este tipo de aplicaciones en Linux, lo que tenemos que hacer es ir arriba del todo, a la línea 1, y poner ahí lo que se conoce como Shebang (#!) acompañado de la ruta a python3. La cadena completa sería #!/usr/bin/env python3, aunque en ocasiones también funciona o es necesario quitar la parte de «env» y dejar ahí «python3». Básicamente, esa línea está diciendo qué programa debería encargarse de ejecutar el archivo.

Pero con esto no será suficiente. También tenemos que darle al archivo Python permiso de ejecución, algo que conseguiremos escribiendo chmod +x ruta-al-archivo/archivo.py o con un clic derecho y marcando la casilla en gestores de archivos que lo soporten.

Con los permisos, el Shebang y recordando y arreglando la compilación de otros sistemas operativos si fuera necesario, el archivo .py con interfaz gráfica (que también podemos encontrar como .pyw) debería abrirse con un doble clic. Si no, siempre se puede intentar desde el terminal (o desde el explorador/ejecutar desde el terminal). Eso sí, cuidado con lo que abrimos.


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.