La variable PATH para el científico de datos confundido Cómo gestionarla.

'Confused data scientist How to manage the PATH variable.'

Entendiendo qué es PATH y cómo agregar rutas en sistemas Windows y Unix

Imagen creada por mí con Midjourney

A veces siento como si la gente en StackOverflow tuviera brújulas pegadas en el techo de sus cabezas. Siempre parecen encontrar el PATH.

Creo que no está en tu PATH. Podrías haber arruinado tu PATH. ¿Lo agregaste a tu PATH? Verifica si el ejecutable está en tu PATH.

“Quiero decir, ¿qué demonios es PATH?” Siempre decía cada vez que leía esas frases, rojo de la rabia, tratando de arreglar un error. Ahora, he estado en mi viaje de ciencia de datos por más de tres años y sé completamente lo que es. Casi.

Y en este artículo, planeo enseñar cómo manejar esta variable de entorno confusa en ambos sistemas, Windows y Unix.

¡Comencemos!

Los comandos también tienen rutas

¿Cuál es el comando de terminal que más usas? Sin duda, el mío es git ya que hago commits con frecuencia mientras escribo artículos.

La razón por la que pregunto es porque la mayoría de los comandos de terminal también tienen sus propias rutas en el sistema operativo. Para encontrar esa ruta, solo tienes que ejecutar which valid_command_name. Por ejemplo, aquí está la ruta de mi instancia git:

$ which git  # En Windows, usa `where`/usr/bin/git

Puede que reconozcas que arriba es una ruta absoluta. ¿Pero una ruta a qué exactamente?

¡A un archivo binario ejecutable! (Si estás en Windows, obtendrás una ruta de archivo .exe) Contiene instrucciones sobre qué hacer cuando se ejecutan comandos git. Todos los comandos de terminal son scripts de shell o ejecutables de alguna forma que realizan ciertas tareas.

Por ejemplo, puedes probar el comando which en los comandos de terminal incorporados como clear, cat o touch y obtendrás rutas absolutas (incluso para el comando which en sí).

Una vez que tengas la ruta al ejecutable, puedes intentar ejecutar un comando con su ruta completa así:

$ /usr/bin/git status -s  # lo mismo que `git status -s`M 2023/6_june/7_path/dump.ipynb

¡Y funciona! Pero aquí está lo interesante, ¿cómo puede la palabra git ser equivalente a la ruta absoluta /usr/bin/git? Quiero decir, git es solo una palabra.

¿Cómo sabe tu computadora las rutas completas de tantos comandos y puede ejecutarlos con una sola palabra clave?

¡(Este es el momento de la verdad!)

¡Usando la variable PATH!

¡Mira! ¡La variable PATH!

PATH es una variable que contiene las rutas absolutas a archivos ejecutables que ejecutan casi todos los comandos de terminal, tanto los incorporados como los instalados por el usuario.

Cuando escribes cualquier comando como conda env create, el sistema operativo busca un ejecutable llamado conda dentro de tu variable PATH. Si no puede encontrar el ejecutable, devuelve un error de comando no encontrado:

$ unknown_commandunknown_command: command not found

Puedes imprimir las rutas en tu PATH con un solo comando.

En sistemas Unix:

$ echo $PATH/home/bexgboost/.local/bin:/home/bexgboost/anaconda3/bin:...

En Windows:

$ ECHO %PATH%C:\Python39\Scripts\;C:\Python39\;C:\WINDOWS\system32;...

Cada ruta en PATH está separada por dos puntos en Unix y un punto y coma en Windows.

Es gracias a estos caminos que no tienes que recordar docenas de rutas absolutas a ejecutables instalados en tu sistema.

Trabajando con PATH en Windows

Editar la variable PATH es diferente en sistemas similares a Unix y en el obstinado Windows. Esta sección trata sobre cómo administrar tu variable PATH en Windows.

La operación más común que harás con PATH es agregar nuevas rutas. Por ejemplo, para agregar el directorio C:\Users\user\Desktop\articles a PATH, debes abrir el Símbolo del sistema o Powershell con privilegios de administrador. Luego, ejecuta el siguiente comando:

$ setx PATH "%PATH%;C:\Users\user\Desktop\articles"

Pero, no te apresures — si no tienes cuidado, el comando setx puede terminar muy mal para tu PATH. Por lo tanto, lo seguro en Windows es agregar rutas a través de la ventana Propiedades del sistema.

Aquí hay instrucciones paso a paso y un GIF para agregar una nueva ruta a PATH:

  1. Haz clic en el botón Inicio y busca ” Editar las variables de entorno del sistema ” y haz clic en el primer resultado.
  2. Haz clic en ” Variables de entorno ” en la ventana emergente.
  3. Decide si la nueva ruta debe agregarse para el usuario actual o todo el sistema.
  4. Bajo ” Variables de usuario para tu_nombre_de_usuario ” o ” Variables de sistema “, desplázate hacia abajo hasta que encuentres la variable ” Path ”.
  5. Selecciona la variable y haz clic en Editar.
  6. En la nueva ventana emergente, haz clic en ” Nuevo ” y pega la nueva ruta, por ejemplo, C:\Users\user\Desktop\articles
  7. Haz clic en Aceptar tres veces.
GIF by me.

Desde la ventana emergente final, también puedes eliminar o cambiar el orden de las rutas (ver la sección final sobre la importancia del orden).

Trabajando con PATH en Unix

En sistemas similares a Unix, agregar una nueva ruta a PATH es mucho más fácil.

Por ejemplo, para agregar la ruta /home/bexgboost/articles, debes ejecutar el siguiente comando:

$ export PATH="/home/bexgboost/articles:$PATH"

La nueva ruta se agregará al principio de PATH. Para agregarla al final, debes cambiar la posición de $PATH:

$ export PATH="$PATH:/home/bexgboost/articles"

Pero la nueva ruta se agregará solo durante la duración de la sesión del terminal actual. Para agregarla permanentemente a tu variable de entorno PATH, debes agregar el comando export a tu archivo de configuración de shell.

El archivo de configuración específico depende de la shell que estés usando:

  • Para Bash: Agrega el comando export a ~/.bashrc o ~/.bash_profile (también puedes considerar .profile, consulta aquí las diferencias).
  • Para Zsh: Agrega el comando export a ~/.zshrc.
  • Para Fish: Agrega el comando export a ~/.config/fish/config.fish.

Una vez que elijas el tuyo de la lista (elegiré .bash_profile), usa el siguiente comando echo:

$ echo 'export PATH="$PATH:/home/bexgboost/articles"' >> ~/.bash_profile

Luego, recarga el archivo de configuración con source ~/.bash_profile y listo.

El orden de las rutas

El orden de las rutas en la variable PATH determina la prioridad en la que se buscan los directorios al ejecutar comandos o programas.

Cuando ingresas un comando en el terminal, el sistema operativo busca su ejecutable verificando secuencialmente cada ruta en PATH de izquierda a derecha. Si varios directorios contienen ejecutables con el mismo nombre, se utilizará el primero.

Por ejemplo, si tienes múltiples versiones de Python en tu sistema, se utilizará el ejecutable de Python más a la izquierda en tu PATH cuando ejecutes python en la terminal.

Conclusión

En el mundo de la ciencia de datos y del aprendizaje automático, a menudo se pasa por alto la terminal. En su lugar, los cursos en línea y los bootcamps atraen la atención de los principiantes hacia IDEs más brillantes como VSCode o JupyterLab.

Pero algún día, lo inevitable sucede y tienen que abrir la oxidada terminal en sus propias máquinas. Ahí es cuando se topan con un gran obstáculo en su PATH.

Espero que este artículo te ayude a destrozar ese obstáculo en pedazos.

¡Gracias por leer!

¿Te encantó este artículo y, seamos sinceros, su extraño estilo de escritura? Imagina tener acceso a docenas más como este, todos escritos por un autor brillante, encantador e ingenioso (o sea, yo).

Por solo 4,99$ de membresía, tendrás acceso no solo a mis historias, sino a un tesoro de conocimiento de las mentes más brillantes y expertas en Zepes. Y si usas mi enlace de referencia, ganarás mi supernova de gratitud y un choca esos cinco virtual por apoyar mi trabajo.

Como miembro de Zepes, una parte de tu cuota de membresía va a los escritores que lees, y obtienes acceso completo a cada historia…

ibexorigin.medium.com