Como romper pip, y como repararlo

Published Aug 03, 2018 22:00 UTC on Yaroslav's weblog

A veces, un programa nos puede sugerir hacer algo, y posiblemente sigas el consejo que te haya ofrecido porque ¿Por qué no? Confías en los desarrolladores que lo hicieron, y como han hecho un maravilloso trabajo desarrollando el programa, seguramente saben de lo que hablan.

Sin embargo, esto no parece ser así con pip. Me encontré con este error en mi laptop y en mi computadora de escritorio, en las cuales tengo instalado Manjaro, y logré corregirlo en mi portátil. Sin embargo, cuando me volví a encontrar con el problema en mi computadora de escritorio, ya se me había olvidado como repararlo. El problema: cuando intentas instalar algún modulo a nivel de sistema con pip (por ejemplo, pywal), sale un excepción como 'ModuleNotFoundError' que previene la instalación de dicho módulo.

Primero escribiré qué es lo que NO hay que hacer para evitar el problema.

Probablemente te salga un mensaje como éste después de haber usado pip

You are using pip version x.x.x, however version x.x is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Si te sale éste mensajito al estar usando pip fuera de un medio virtual (virtual environment), NO le hagas caso. Ni siquiera le mires. Simplemente ignóralo. Yo le hice caso, y mira a lo que me llevo. Por hacerle caso ahora estoy escribiendo una entrada acerca de como arreglar este rollo por haberle hecho caso al mensaje. Al menos ignóralo si estás usando una distribución basada en Arch. No sé cómo sea en las demás, ya que no me acuerdo haberme encontrado con este error cuando usaba Debian.

Vaya, que si estás usando un medio virtual, claro que puedes, y deberías, actualizar pip como dice el mensaje. Pero si estás fuera de un medio virtual instalando paquetes a nivel de sistema, tu administrador de paquetes (pacman) se hará cargo de actualizar pip al momento en que actualices el resto del sistema (pacman -Syu).

La solución

Si tú, desafortunadamente, al igual que yo, ya hiciste la chorrada de actualizar pip usando nada más y nada menos que pip, primero deberás eliminar los archivos de pip ejecutando el siguiente comando:

$ sudo rm -rf /usr/lib/python3.6/site-packages/pip /usr/lib/python3.6/site-packages/pkg_resources

Posteriormente, necesitarás reinstalar pip y setup tools:

$ sudo pacman -S python-setuptools python-pip

Y ya está ¡Así de fácil!.

La solución la encontré en el siguiente foro: https://bbs.archlinux.org/viewtopic.php?id=237451