Python es actualmente uno de los lenguajes de programación más populares que existen. Es un lenguaje potente pero sencillo que puede utilizarse en casi cualquier entorno de desarrollo.

Una encuesta de 2021 de Stack Overflow revela que Python es el lenguaje de programación con el que más desean trabajar los desarrolladores.

Python es el lenguaje más popular con un 19,04%, le sigue Typescript con un 15,29%, y terminando el top 3, JS con un 14,59%.
Encuesta de Stack Overflow.

Gracias a herramientas como Jupyter Notebook, Google Colaboratory y los compiladores en línea, puedes empezar a utilizar este lenguaje sin tener que preocuparte de instalar nada.

Sin embargo, si quieres ir más allá y disfrutar de la verdadera potencia de un lenguaje de propósito general como Python (especialmente creando aplicaciones complejas), tarde o temprano tendrás que aprender a utilizar la CLI, o interfaz de línea de comandos.

La mayoría de los desarrolladores coinciden en que una de las partes más intimidantes del aprendizaje de Python es la CLI. Pero con sólo unos pocos comandos en tu haber, la dominarás en poco tiempo.

En este artículo, aprenderás los comandos más útiles para el desarrollo en Python.

¿Qué Es la Interfaz de Línea de Comandos?

La interfaz de línea de comandos — a menudo abreviada como CLI — es un programa basado en texto que se utiliza para ejecutar programas y realizar tareas relacionadas con el sistema operativo (SO), como crear y gestionar archivos.

Las CLI aceptan la entrada del teclado en forma de comandos y los pasan a un shell o intérprete de comandos. Estos intérpretes de comandos interpretan las órdenes dadas por el usuario, las ejecutan y devuelven un resultado que suele denominarse salida.

Una CLI puede ejecutar diferentes shells. Esta captura de pantalla muestra dos CLI diferentes, una con el shell Python y otra con Bash:

Shell Python y Bash abiertos en dos CLIs diferentes mostrando la salida de los comandos print y neofetch.
Shell Python y Bash.

Estos dos conceptos se confunden a menudo, así que aquí tienes el análisis:

  • CLI es la interfaz basada en texto en la que escribes comandos y obtienes la salida de esos comandos. Puede ejecutar diferentes shells.
  • Un shell es un intérprete de comandos capaz de interactuar con el sistema operativo.

Lo creas o no, cada programa que tu sistema ejecuta implica un comando. Las ventanas (GUI) con las que interactúas cada día están formadas por enlaces que activan comandos que te permiten interactuar con el sistema operativo.

¿Necesitas la CLI en el Desarrollo de Python?

Para ser un desarrollador full-stack eficaz, necesitarás tener un sólido conocimiento de la línea de comandos. Esto se debe a que la mayoría de los frameworks de backend requieren alguna forma de interacción con una CLI directamente, y si planeas desplegar una aplicación por ti mismo, la línea de comandos será tu mejor amiga.

Hoy en día, puedes ejecutar Python desde innumerables servicios online, así como IDEs que facilitan mucho la ejecución de tus programas. Pero si te dedicas al desarrollo web  — especialmente el backend, la automatización de tareas, al blockchain, al uso de un ordenador remoto vía SSH, o al manejo de herramientas amigables con Python como Docker, definitivamente necesitarás manejar la CLI.

De hecho, Python tiene un montón de bibliotecas para construir aplicaciones CLI, como Typer, Argsparse y Click. Puedes pasar de ser sólo un usuario de la CLI a ser un creador de tus propias aplicaciones de la CLI Esto demuestra la fuerte conexión entre los entornos CLI y Python.

Una vez que domines la CLI, será mucho más fácil ejecutar tus tareas como programador de Python, y verás la ventaja cuando utilices otros lenguajes de programación como PHP, C, C++ o Java.

Introducción a la CLI

Dependiendo del sistema operativo que estés ejecutando, encontrarás diferencias en la forma de utilizar la línea de comandos. Cada sistema operativo tiene su propia forma de abrir e interactuar con una CLI debido a sus diferentes estructuras de organización de archivos y a sus shells de comandos por defecto.

Echemos un vistazo a los tres sistemas operativos más utilizados por los desarrolladores: Windows, Mac y Linux.

Windows

Windows es el sistema operativo de escritorio más popular, sobre todo por su precio y facilidad de uso. Si quieres acceder a la CLI en Windows, debes abrir el programa «Command Prompt» o «Windows Powershell».

Recuerda que Windows utiliza \ para las rutas en lugar de /. Debes tenerlo en cuenta cuando navegues por los directorios.

También en Windows, tienes la alternativa de instalar Git Bash, una línea de comandos que emula el comportamiento del shell Bash en Windows. Esto haría que la mayoría de los comandos de Unix que se muestran a continuación fueran compatibles con tu sistema.

Mac

En cuanto a Mac, la línea de comandos es accesible desde una aplicación integrada llamada «Terminal». Puedes buscarla con el Launchpad, o encontrarla en la carpeta «Utilidades» en «aplicaciones».

Linux

En Linux, tienes un montón de opciones diferentes dependiendo de la distro que utilices, pero el comando «Ctrl + Alt + T» suele activar el terminal por defecto de tu sistema.

Ahora, deberías tener una ventana similar a la que se muestra a continuación:

 Manjaro Linux CLI mostrando el estado del sistema.
CLI.

20+ Comandos CLI Más Útiles para el Desarrollo en Python

Una vez que tengas tu CLI abierta, es hora de sumergirte en los principales comandos de la shell que harán tu vida como desarrollador de Python mucho más fácil.

Comandos de Instalación

Probablemente te hayas topado con un millón de formas de instalar Python. Pero a veces, es mucho más cómodo hacerlo con un solo comando.

Aquí están los diferentes comandos que te ayudarán a instalar Python en diferentes sistemas operativos.

1. Chocolatey

En Windows, no tienes ningún gestor de paquetes por defecto. Una opción para superar esto es Chocolatey, que te proporciona programas para instalar directamente desde la línea de comandos, incluyendo obviamente a Python.

Asegúrate de instalar Chocolatey antes de ejecutar el siguiente comando:

choco install python --pre 

2. Homebrew y Pyenv

macOS viene con Python 2.7 instalado por defecto. Sin embargo, Python 2.7 está ahora en desuso. Toda la comunidad se ha pasado a Python 3. Para gestionar tus versiones de Python de forma eficiente, puedes utilizar un programa como pyenv.

Abre una línea de comandos e instala la última versión de Homebrew (un gestor de paquetes como Chocolatey) con el siguiente comando:

/bin/bash -c "$(curl -fsSL
https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Luego puedes instalar pyenv con este sencillo comando:

brew install pyenv

Puedes instalar una versión específica de Python y establecerla como ejecutable global de Python en lugar de Python 2:

pyenv install 3.10 # Version you want
pyenv global 3.10.4 # Sets that version as default

Ahora, si llamas a Python, será la versión que hayas establecido con pyenv:

python
# Python 3.10.4 ....
# >>>

3. apt, pacman y dnf

Con el amplio uso de Python para el software de código abierto, un gran número de distros de Linux vienen con Python preinstalado. Si tu sistema no lo tiene, puedes instalar Python con un gestor de paquetes.

En las distros basadas en Debian (Ubuntu, Linux Mint, Kali Linux), utilizarás apt, que significa «herramienta de paquetes avanzada»:

sudo apt update
sudo apt install python3

Además, si quieres establecer Python 3 como tu intérprete de Python por defecto, puedes utilizar el siguiente comando:

sudo apt install python-is-python3

En las distros basadas en Arch, puedes utilizar el gestor de paquetes oficial pacman:

sudo pacman -S python

En Fedora y en las distribuciones Linux basadas en RPM (Red Hat, CentOS), se utiliza dnf:

sudo dnf install python3

Comandos del intérprete

Repasemos rápidamente las principales banderas — opciones de la línea de comandos — del comando Python y su gestor de paquetes, pip.

4. python

El comando python tiene varias banderas, es decir, opciones que modifican el comportamiento de la ejecución del código.

En primer lugar, para ejecutar un archivo Python, basta con llamar al intérprete y añadir el nombre del archivo, incluyendo la extensión .py:

python helloworld.py

Si necesitas recordar lo que hace una bandera, puedes utilizar la bandera help en cualquiera de estas 3 presentaciones:

python -?
python -h
python --help

Para imprimir (ver) la versión de Python que estás ejecutando, utiliza lo siguiente:

python -V
python --version

Si quieres ejecutar el código de Python sin abrir y editar un archivo .py, puedes ejecutarlo directamente desde tu terminal con la bandera de comando:

# Hello, World!
python -c "print('Hello, World!')"

La bandera m ejecuta un módulo de Python como un script. Esto es muy útil cuando quieres crear un entorno virtual con el módulo incorporado venv:

python -m venv .venv

5. pip

El comando pip busca paquetes en el Índice de Paquetes de Python (PyPI), resuelve las dependencias e instala la versión del paquete que hayas indicado.

Para instalar un paquete de Python, sólo tienes que escribir pip y el nombre del paquete que quieres instalar.

El siguiente comando instalará la última versión del paquete:

pip install django

Si quieres una versión concreta, ejecuta el siguiente comando:

# pip install package==version
pip install django==4.0.4

Cuando trabajas en proyectos colaborativos, necesitas llevar un registro de las dependencias, normalmente con un archivo de requisitos. Con la bandera r, puedes leer e instalar paquetes desde un archivo de texto:

pip install -r requirements.txt

Otra función muy utilizada es la bandera freeze. Se utiliza para obtener una lista de las versiones de los paquetes que has instalado en tu entorno. Puedes utilizarla para dar salida a tus dependencias en un archivo de requisitos:

pip freeze >> requirements.txt

Comandos de Permisos

Python es muy bueno en el manejo de scripts y archivos. Para trabajar con estas tareas, necesitas tener algún conocimiento de cómo funcionan los permisos en tu sistema operativo.

6. sudo, runas

En los sistemas basados en Unix (macOS, Linux, BSD), debes tener permisos de superusuario para realizar ciertas tareas, como la instalación de un programa, como hicimos anteriormente.

El comando sudo te permite obtener brevemente permisos de administrador para ejecutar uno de estos comandos.

A continuación se muestra un ejemplo de instalación global de ueberzug (un paquete de Python de previsualización de imágenes):

sudo pip install ueberzug

El equivalente en Windows es Runas, que ejecuta un script como un usuario diferente o como administrador:

runas /noprofile /user:Administrator cmd

También hay otros proyectos como Gsudo, que hace que el proceso de elevación de permisos sea mucho más fácil que con otros comandos integrados de Windows:

:: Installs gsudo
choco install gsudo

:: Reads a file named MySecretFile.txt
gsudo type MySecretFile.txt

7. chmod

chmod se utiliza para cambiar los permisos de los archivos y directorios en Unix.

Un uso común es hacer ejecutable un script de Python:

# Makes mypythonscript.py executablechmod +x
mypythonscript.py

Después de hacer ejecutable un script, puedes ejecutarlo directamente utilizando la notación ./:

# Runs the script
./mypythonscript.py

Comandos de Navegación

Navegar por el sistema de archivos en una interfaz de línea de comandos es una tarea cotidiana para los desarrolladores de Python. Aquí tienes algunos comandos esenciales para navegar por tu sistema cuando programes con Python.

8. ls, dir

Para listar el contenido de un directorio (carpeta), tienes que utilizar el comando ls (Unix) o dir (Windows). Es probable que éste sea el primer comando que aprendiste cuando te encontraste por primera vez con la CLI.

Esta es la sintaxis utilizada:

ls # Muestra el contenido del directorio de trabajo
ls midirectorio

Y aquí tienes un ejemplo del contenido de una carpeta en un sistema de archivos local:

ls test_python/
# classes_error.py radius.py test-Django

Este comando tiene muchas banderas útiles. De hecho, a menudo se asocia a ls -al para ver los archivos ocultos (los que tienen un punto al principio) y el modo, el tamaño y la fecha de cada archivo:

alias ls="ls -al"

# Results
total 20
drwx------ 3 daniel daniel 4096 ene 16 19:13 .
drwxr-xr-x 36 daniel daniel 4096 may 17 22:18 ..
-rw------- 1 daniel daniel  32 nov 17 2020 classes_error.py
-rw------- 1 daniel daniel 327 nov 10 2020 radius.py
drwx------ 4 daniel daniel 4096 ene 16 01:07 test-Django

En cuanto a Windows, puedes usar ls usando Git Bash, o puedes hacer uso del comando incorporado dir incorporado:

dir

9. pwd

pwd significa «imprimir el directorio de trabajo», y hace exactamente eso: te da la ruta completa del directorio en el que estás:

pwd
# /home/daniel/github/HTML-site/images

Si alguna vez te has perdido en tu terminal, este comando es un salvavidas.

Puedes conseguir la misma salida en Windows utilizando el comando cd sin parámetros (ten en cuenta que el mismo comando en Unix te llevaría al directorio raíz):

# Solo en Windows
cd
# D:FoldersubFolder

10. cp

Copiar archivos con un gestor gráfico de archivos es intuitivo, pero poco eficiente. Con este comando, puedes copiar cualquier tipo de archivo en tu sistema:

cp old_file.txt copy_old_file.txt

Para copiar todo el contenido de un directorio, debes utilizar cp -r:

cp -r originaldirectory/ newdir

El equivalente a cp en Windows es copy:

copy old_file.txt copy_old_file.txt /a

11. cat, type

Para imprimir el contenido de un archivo de texto en el terminal sin abrir el archivo con un editor, puedes utilizar las funciones cat, more, o less en Unix, y type en Windows:

cat old_file.txt # Unix
type old_file.txt # Windows

# Content
Hi there I hope you're enjoying the article ...
as much as I've enjoyed writing it!
End of the sample.

12. mv, mover

El comando mv mueve archivos y directorios de un directorio a otro — básicamente un cortar y pegar — o renombra un archivo si el destino no existe:

# Renombrar archivos
mv source_file.txt renamed_file.txt
# Mover Artchivo a otro directorio
mv renamed_file.txt newdir/

También puedes utilizar la coincidencia de patrones para mover archivos. Por ejemplo, mueve todos los archivos de .py a otra carpeta:

mv *.py mypythondir/

Un comando equivalente en Windows es move que tiene casi la misma funcionalidad que el anterior:

# Windows
move source_file.txt renamed_file.txt

13. rm, del

Puedes utilizar el comando rm para eliminar archivos y directorios.

Para eliminar un archivo, no un directorio, debes utilizar:

rm file_to_remove.txt

Si quieres eliminar un directorio vacío, puedes utilizar la bandera recursiva (-r):

rm -r dir_to_remove/

Para eliminar un directorio con contenido dentro, utilizarías las banderas de fuerza (-f) y recursiva:

rm -rf dir_with_content/

De forma similar, se encuentra del en Windows. Sé aún más cauteloso, ya que este comando no tiene las banderas de prevención vistas anteriormente:

del mywindowsdir

14. exit

Una vez que hayas terminado de programar en Python, deberías poder salir de tu sesión de shell. En la mayoría de los casos, esto también cerrará el terminal que estés utilizando:

exit

Ten en cuenta que este comando funciona tanto en Windows como en Unix.

Editores de Línea de Comandos

Una vez que te acostumbres a la línea de comandos, verás que es más lento cambiar de ventana o incluso utilizar el ratón para editar tu código.

Tener la posibilidad de programar mientras te mantienes en la línea de comandos no sólo es una gran manera de ahorrar tiempo, sino que también te hará parecer un ¡superhéroe entre tus compañeros de equipo!

Aquí tienes algunos de los editores de línea de comandos más utilizados.

15. Vim/Neovim

Vim y su descendiente, Neovim, son editores de texto basados en el teclado que se utilizan principalmente en la línea de comandos. Según una encuesta de 2021 de Stack Overflow, ocupan el 4º y el 1º lugar entre los editores más queridos por los desarrolladores.

Los resultados de la encuesta muestran a Neovim como el editor más querido y a Vim en la cuarta posición.
Editores de código favoritos.

Vim está preinstalado en Linux y macOS. De hecho, es el editor que más encontrarás al interactuar con los servidores. En Windows, tendrás que instalarlo utilizando el instalador ejecutable de la página de Vim.

Ahora, puedes disfrutar de la potencia de Vim con sólo escribir su nombre en la línea de comandos:

vim

Esto activará una interfaz basada en texto con múltiples combinaciones de teclado para cada acción que puedas necesitar al programar en Python.

Vim tiene una empinada curva de aprendizaje, pero una vez que lo domines, no cambiarás pronto a otra cosa.

Vi IMproved.
Vi IMproved.

16. Nano

Nano es otro editor de texto de línea de comandos que se utiliza principalmente para ediciones rápidas.

Digamos que has introducido un error de sintaxis en tu código pero no quieres abrir tu editor para corregirlo. Nano te ayuda a corregirlo directamente desde tu CLI:

nano

17. Emacs

Emacs es uno de los editores de texto más extensibles y personalizables que puedes encontrar. Tiene toda una sección dedicada a la programación en Python donde encontrarás toneladas de plugins para mejorar tu experiencia de desarrollo.

Emacs está disponible en casi todos los sistemas operativos, así que si aún no lo tienes instalado, consulta las instrucciones de descarga.

Para abrir Emacs desde la línea de comandos, utiliza la bandera de sistema sin ventana (-nw):

emacs -nw

Herramientas de desarrollo

El desarrollo de Python no sólo implica programar, sino también manejar herramientas adicionales como entornos virtuales, sistemas de control de versiones y herramientas de despliegue.

Aprendiendo los siguientes comandos obtendrás una ventaja en el desarrollo de cualquier tipo de aplicación con Python.

18. virtualenv/venv

Los entornos virtuales son una técnica crucial utilizada en el desarrollo de Python. Con ellos, puedes aislar los paquetes utilizados en diferentes proyectos en una carpeta liviana, que suele llamarse .venv.

Con Python 3.3 o superior, puedes utilizar el módulo incorporado venv para crear un entorno virtual:

# .venv siendo el nombre del entorno virtual
python -m venv .venv

virtualenv es un proyecto externo que es más rápido y más extensible en comparación con la opción incorporada. Para crear un entorno virtual, instala primero el paquete virtualenv:

# Instala virtualenv
pip install --user virtualenv

# Crea un entorno virtual .venv
virtualenv .venv

A continuación, tendrás que activar el entorno virtual. En Windows, ejecuta uno de los siguientes comandos en función de si utilizas cmd o PowerShell (recomendado):

:: PowerShell
.venvScriptsActivate.ps1
:: Cmd
.venvScriptsactivate.bat

En Linux o macOs:

source .venv/bin/activate

19. Git

El control de versiones es una de las prácticas más importantes en el desarrollo de software. Nos permite hacer un seguimiento de todas las modificaciones del código, colaborar con otros desarrolladores y ver una imagen clara del proceso de desarrollo en su conjunto.

Git es, con mucho, el sistema de control de versiones más utilizado. Puedes instalarlo desde su página de descargas.

Una vez instalado, puedes abrir un terminal y echar un primer vistazo a todas las opciones disponibles con este comando:

git help

Para crear un repositorio, utiliza git init y escribe el nombre de tu repo:

git init name_repository
Initialized empty Git repository in /home/daniel/name_repository/.git/

Ten en cuenta que esto sólo creará un repositorio Git local. Si quieres tener un repositorio remoto donde almacenar todos tus cambios en línea, debes utilizar una plataforma como GitHub, o BitBucket.

Para clonar un repositorio remoto, utilizarás git clone y la fuente del repositorio. En el siguiente ejemplo, estamos clonando un repositorio de GitHub a través de SSH:

git clone [email protected]:DaniDiazTech/HTML-site.git
...
Cloning into 'HTML-site'...
remote: Enumerating objects: 24, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 24 (delta 6), reused 21 (delta 4), pack-reused 0
Receiving objects: 100% (24/24), 4.98 MiB | 438.00 KiB/s, done.
Resolving deltas: 100% (6/6), done.

20. Docker

Docker facilita el empaquetado y envío de tus aplicaciones Python como contenedores ligeros, portátiles y autosuficientes. Ayuda tanto en el desarrollo como en el despliegue, permitiendo que todos los colaboradores trabajen con la misma configuración.

Para utilizar Docker, debes seguir rigurosamente el proceso de instalación que se muestra para tu sistema operativo en la página Obtener Docker.

Para listar los comandos Docker disponibles, ejecuta lo siguiente:

docker help 

Sería difícil explicar cómo ejecutar Docker compose en esta estrecha sección, así que asegúrate de consultar la documentación oficial.

21. Grep

Grep es una utilidad esencial de la línea de comandos que se utiliza para la búsqueda de patrones en archivos de texto plano.

Un uso común es encontrar cuántas veces se repite una palabra en un archivo:

grep -ic python pythondocument.txt
2

En el ejemplo anterior, obtenemos el número de veces que se encuentra Python (sin distinguir mayúsculas y minúsculas) en el archivo pythondocument.txt.

El equivalente de grep en Windows es findstr. Sin embargo, no es exactamente el mismo programa. Puedes utilizar el Git Bash para utilizar grep en Windows:

findstr /i /C python pythondocument.txt
2

22. HTTPie

HTTPie es un cliente HTTP de línea de comandos que facilita la interacción con los servicios web. Puedes utilizarlo, por ejemplo, para probar tus APIs de Python, o para interactuar con sitios de terceros.

Esta herramienta CLI está disponible en casi todos los gestores de paquetes, como se indica en la documentación oficial de HTTPie. Sin embargo, también está disponible como paquete de Python, por lo que puedes instalarlo con pip.

pip install httpie

Así es como se consulta una API remota, en este caso, la API de GitHub:

http GET https://api.github.com/users/danidiaztech
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Origin: *
...

23. ping

ping es un comando CLI disponible por defecto en prácticamente cualquier sistema operativo. Funciona enviando paquetes de datos a una dirección IP y probando cuánto tiempo tarda en transmitir los datos y recibir una respuesta, y luego te muestra los resultados en milisegundos

Este comando se utiliza principalmente para verificar la conexión entre dos máquinas, concretamente tu máquina y tu aplicación Python en un servidor web:

ping kinsta.com
PING kinsta.com(2606:4700:4400::ac40:917d (2606:4700:4400::ac40:917d)) 56 data bytes
64 bytes from 2606:4700:4400::ac40:917d (2606:4700:4400::ac40:917d): icmp_seq=1 ttl=50 time=686 ms

Tabla de Referencia de Comandos

A continuación, puedes encontrar una referencia rápida para cada comando que hemos discutido:

Comando Uso
choco Instala paquetes en Windows
brew Gestor de paquetes de macOS
apt, pacman, dnf Gestor de paquetes en diferentes distribuciones de Linux
python Ejecuta el intérprete de Python
pip Gestor de paquetes de Python
sudo, runas Programa de Unix y Windows utilizado para escalar los permisos
chmod Cambia los permisos de los archivos
ls Lista el contenido de un directorio
pwd Imprime el directorio de trabajo
cp Copia archivos y directorios
cat Imprime el contenido de los archivos
mv, move Mueve (renombra) archivos y directorios
rm, del Elimina archivos y directorios
exit Sale de la sesión de shell actual
vim, neovim Editores de texto eficientes
nano Editor de texto para ediciones rápidas
emacs El editor más personalizable
virtualenv, venv Generadores de entornos virtuales
git Sistema de control de versiones
docker Contenedor de aplicaciones
grep Utilidad de comparación de patrones
http Utilidad de comprobación de servicios web
ping Comprueba la conectividad de la red
kill Termina programas

 

Resumen

Python es uno de los lenguajes de programación más fáciles de aprender. El único escollo que encontrarás es cuando te dirijas a la línea de comandos sin entender los comandos que vas a necesitar.

En este artículo, has aprendido sobre la línea de comandos y algunos de sus comandos más populares utilizados para el desarrollo de Python.

¿Qué otros comandos has encontrado útiles en el desarrollo de Python? ¡Compártelos en los comentarios de abajo!

Daniel Diaz

Daniel is a self-taught Python Developer, Technical Writer, and long-life learner. He enjoys creating software from scratch and explaining this process through stunning articles. Follow him on Twitter: @DaniDiazTech