Si aún no has visto la primera parte del artículo, te recomiendo comenzar por allí: Cómo manejar varias versiones de Python (Parte 1)Problema 2: He instalado la librería que necesito, pero luego recibo un mensaje de error indicándome que la librería no existe
Este problema casi siempre tendrá que ver con el mismo motivo anterior: no hemos efectuado una correcta configuración del Path de nuestro ordenador. Si bien la solución es exactamente la misma (asegurarnos que verdaderamente ejecutemos la versión de Python y pip que necesitamos en cada momento), aprovechemos ahora para ver cómo “debuggear” este problema y confirmar verdaderamente lo que ocurre.
Al instalar paquetes a través de pip, se ejecutará el comando que se encuentre primero dentro de nuestras variables de entorno, por lo cual, en el siguiente ejemplo, será la siguiente ubicación:
Sin embargo, ocurrirá un problema si por cualquier motivo tienes las variables de entorno desordenadas en tu ordenador, por ejemplo, como en este caso:
Lo que nos dice la ventana anterior es el siguiente orden de prioridad:
Intérprete de Python 3.9
Comando pip para Python 3.10
Intérprete de Python 3.10
Comando pip para Python 3.9
Intérprete de Python 3.6
etc.
Donde el ejecutable pip de Python 3.10 se encuentra por encima del ejecutable pip de Python 3.9, que es a su vez el intérprete predeterminado. Esto significa que las librerías que instalemos con esta configuración, utilizando pip, quedarán dentro de la librería Scripts de Python 3.10, que corresponde a un intérprete diferente del que tenemos como predeterminado para el ordenador.
¿Cómo se ve esto desde la consola? Supongamos que queremos instalar Django en Python 3.9 (nuestro intérprete predeterminado), siendo que ya lo teníamos instalado en Python 3.10. Confirmamos primero nuestra versión de Python:
Tiene sentido, así que salimos utilizando exit() y nos disponemos a instalar Django utilizando pip:
Obtenemos el mensaje “Requirement already satisfied”, o en otras palabras, la confirmación de que Django ya se encontraba instalado en nuestro intérprete. Inesperado, pero genial, ¿no? Pues no, dado que se nos presentarán errores. Si continuando de esta manera queremos importarlo, recibiremos un mensaje de error:
Un error de “módulo no encontrado”. ¿Cómo es posible, si acabamos de verificar que estaba instalado? Nuestro error fue no haber leído los mensajes que recibimos, ya que en la ejecución anterior, deberíamos habernos dado cuenta que algo andaba mal:
Las rutas de instalación de Django refieren al intérprete de Python 3.10, debido a que el comando pip de Python 3.10 se encontraba primero en la lista de variables de entorno. Lo que debemos hacer a continuación es corregirlo, manteniendo si queremos a Python 3.9 como el intérprete predeterminado, pero mejorando la jerarquía del comando pip:
(Nuevamente, confirmamos los cambios presionado Aceptar hasta salir, y luego cerrar la terminal).
Volvemos a abrir la terminal, verificamos el intérprete de Python que se ejecutará, confirmamos que es 3.9, salimos con exit(), y a continuación, ahora sí, instalamos Django utilizando pip:
Ahora sí se ha realizado la instalación, en lugar de devolver el mensaje “Django ya está instalado”. Todo pinta mejor ahora. Verificamos si podemos importarlo:
Y la línea se ejecuta sin problemas. Todo está, ahora sí, como debería.
Aún no recibas mensajes de error, te recomiendo verificar el estado de tu Path, dado que si instalas las mismas librerías en varios intérpretes, podrías no percatarte de tu error, pero aún así este comportamiento anormal podría producirse: pip instalará las librerías en otras versiones de Python, diferentes de las que quieres utilizar.
Recuerda: ordena por jerarquías los pares comando del intérprete de Python - comando de pip (en el directorio Scripts), siempre uno a continuación de otro, para la misma versión, y mantén primera la predeterminada para ti.
Puedes utilizar también las siguientes líneas para ayudarte:
pip show django (o el nombre de cualquier librería que te interese)
Recibirás bastante información acerca de la librería indicada, como por ejemplo su ubicación, donde podrás confirmar si la librería se encuentra donde esperas (en este caso, es Python 3.9, luego de haberla instalado en el último paso):
Puedes confirmarlo ejecutando:
>> python
>> import sys #(se trata de una librería incorporada, por lo que no necesitas instalarla)
>> sys.executable
Y con la información devuelta, confirmar ambas versiones coinciden:
¡Esto indicará que estás trabajando correctamente!