View on GitHub

ambientes

Ambientes

Introducción

A veces (la mayoría) los paquetes y módulos que queremos usar con python no vienen por defecto en este, esto es, no vienen como parte de la biblioteca estándar. Muchas veces las aplicaciones, programas, el código que queramos utilizar, va a necesitar de una versión específica de una biblioteca, otras veces tendremos dos proyectos al mismo tiempo, los cuáles dependen de la misma biblioteca pero con versiones distintas, y otras veces algunas bibliotecas tienen conflictos con otras bibliotecas.

Esto quiere decir que python no puede saber y gestionar las versiones de las bibliotecas para cada proyecto que tengamos, no puede saber qué bibliotecas y qué versiones de estas necesita, más aún, no puede desinstalar las que tengan conflicto con alguna del proyecto y reinstalarla cuando queramos utilizar otro proyecto.

El primero de enero del año 2020 fue descontinuado python 2, esto no nos importaría sino hubiera bibliotecas específicas para esta versión de python, las cuales probablemente necesitemos y no han sido migradas (Y son incompatibles) con python 3.

Es por todo lo anterior que existen los ambientes virtuales, los cuales son directorios que contienen una versión específica de python, y están aislados de nuestra intalación ‘normal’, esto quiere decir que si instalamos una biblioteca en nuestra computadora, esta biblioteca no estará disponible en estos ambientes, y al revés, si instalamos una en un ambiente, esta no estará instalada en la computadora.

Con esto podemos despreocuparnos por que una nueva biblioteca que descarguemos tenga conflictos con otras que ya teníamos previamente, también podemos descargar en los ambientes versiones específicas de las bibliotecas y listo, ahora tenemos dos problemas solucionados. En algunos ambientes virtuales podemos incluso poner una versión específica de python, por lo que no tendríamos que desinstalarlo y reinstalarlo o estar jugando con las versiones y perder el tiempo en eso.

Podemos crear un proyecto usando un ambiente virtual que no va a afectar a otro proyecto que ya tengamos o que vayamos a crear. Esto es muy importante porque python tiene muchas bibliotecas y más versiones, y muy probablemente nos vaya a pasar alguna vez que la versión no es la correcta o que la biblioteca tiene conflictos.

En este capítulo, vamos a instalar un ambiente virtual y vamos a descar alguna biblioteca para probar.

Descarga Existen varios ambientes virtuales que podemos usar, los más comunes son ‘conda’ y ‘virtualenv’. Recomendamos ‘conda’ pues aparte de servir como ambiente, lo podemos usar como manejador de paquetes para varios lenguajes, por lo que en este notebook, solo veremos ‘conda’.

Conda Como no todos usamos el mismo sistema operativo, ni las mismas versiones, Vamos a adjuntar algo de documentación para que sea fácil de descargar para cualquier interesado.

Primero hay que aclarar que con conda funciona como manejador de paquetes y como ambiente, Los que nos interesan solo son los ambientes, los cuales podríamos ver como ‘miniconda’ y ‘anaconda’ y la diferencia es que miniconda (podríamos verlo) como que se conecta con un repositorio, sin descargar ningún paquete. En cambio anaconda, es como una distribución con paqutes ya integrados.

Es por lo anterior que vamos a instalar ‘miniconda’, en ubuntu, pero para los interesados en ancadonda, pueden revisar [3]. Igual haremos una instalación en windows pero para anaconda.

Para instalar miniconda, se puede revisar [4]. En este notebook, haremos una instalación en un sistema Ubuntu 20.04 con kernel 5.4.0-48-generic.

Ubuntu Primero necesitamos descargar miniconda: =wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh=

Luego le damos modo de ejecución: =chmod +x Miniconda3-latest-Linux-x86_64.sh=

Ejecutamos el archivo: =./Miniconda3-latest-Linux-x86_64.sh=

Nos va a pedir que leamos los términos y condiciones, y que elijamos un directorio para que sea instalado, recomendamos usar el directorio por default.

Y listo, ya tenemos miniconda en nuestro sistema. En una sección posterior explicaremos cómo crear un ambiente.

Windows En esta sección veremos las instrucciones para instalar anaconda en windows.

Las instrucciones están basadas en [5].

Hay que verificar la versión para instalar ya sea de 32 o 64 bits.

Le damos click al instalador, click en siguiente.

Nos va a mostrar los términos y condiciones (recomendamos leerlos) y si están de acuerdo, dar click en aceptar.

Nos va a preguntar si queremos instalarlo solo para nosotros o para todos los usuarios, recomendamos hacerlo solo para ti (A menos que lo quieras para todos los usuarios en tu computadora).

Luego tenemos que poner la ruta de instalación (recomendamos dejarla como está).

Recomendamos no activar ninguna opción (Ya que son opciones para usuarios más avanzados y probablemente un usuario avanzado no vería este tutorial).

Le damos click en instalar (Quizá tarde un poco).

En algunas versiones puede recomendar instalar VisualStudioCode (no lo recomendamos, pero pueden instalarlo). En caso de no quererlo, dar click en el botón ‘Saltar’.

Finalmente damos click en ‘Finalizar’ y es todo.

Creando un entorno Para crear un entorno básico, basta con seguir el siguiente comando:

=conda create -n = donde es el nombre del entorno y va sin los picoparéntesis, entonces por ejemplo, si quisieramos crear un entorno llamado 'entorno', haríamos:

=conda create -n entorno=

Nos preguntará si queremos continuar y le decimos que si y listo, para entrar al entorno basta usar el siguiente comando:

=conda activate donde de nuevo, es el nombre del entorno sin los picoparéntesis.

Hay otras formas de crear entornos por ejemplo con versiones de python específicas, esto es por ejemplo como dijismos antes, python 2 ya no tiene soporte, y si queremos correr algo en python 2, podríamos usar un entorno, otras formas de crear entornos es con paquetes precargados. Para todas estas formas puedes consultar [6].

Instalando paquetes Para ejemplificar el uso de un entorno, veremos un programa haciendo uso de la biblioteca matplotlib:

Si intentamos correr el siguiente programa, veremos que teneos un error que lleva por nombre:

<ModuleNotFoundError: No module named ‘matplotlib’> esto quiere decir que no existe la biblioteca de ‘matplotlib’

Lo que haremos a continuación es (Como ya creamos un entorno) instalar matplotlib en el entorno y descargar ahí matplotlib, para esto:

Lo primero que necesitamos hacer es entrar al entorno (O activarlo)

=conda activate = con el nombre de nuestro entorno sin los picoparéntesis.

Una vez activado, podemos descargar matplotlib:

Podemos descargarlo con ‘pip’ o con ‘conda’

[pip conda] install matplotlib donde [pip conda] es uno u otro.
import matplotlib.pyplot as pyplot

pyplot.plot([1, 2, 3, 4, 5, 6],[1, 2, 3, 2, 1, 2])
pyplot.show()

Una vez que hayamos descargado ‘matplotlib’ veremos que ya no nos manda el error (Y eso es bueno) porque ya tenemos un entorno que contiene a la biblioteca.

Para finalizar, veremos cómo salirnos del entorno, esto se logra con el siguiente comando:

=conda deactivate=

Ahora, si volvemos a correr el mismo programa, veremos que nos vuelve a mandar el error. Y esto es justo lo que explicamos al inicio, podemos ver a los ambientes como contenedores, lo que quiere decir que si tenemos a la biblioteca A dentro del contenedor C, entonces fuera de C la biblioteca no existe. Y si una biblioteca B tiene conflictos con A, y tenemos instalada a B en nuestro sistema, usando un contenedor (ambiente) para instalar a la biblioteca A nos va a evitar problemas.

Comentarios Usar entornos es muy importante y hace buenas prácticas, podemos poner todas las bibliotecas que nuestro proyecto usa, para que quien quiera correr nuestro proyecto solamente tenga que instalar y crear un entorno y con un simple comando(1) instlar todos los requerimientos.

(1) el comando es: =conda install –yes –file = suponiendo que es un archivo con las bibliotecas a instalar.

Y como comando extra con =conda list= (Dentro del entorno) podemos ver las bibliotecas que usamos, esto es para colocarlas por ejemplo en un archivo llamado ‘requirements.txt’.

Bibliografía

  1. https://docs.python.org/3/tutorial/venv.html#introduction
  2. https://docs.conda.io/en/latest/
  3. https://docs.anaconda.com/anaconda/install/
  4. https://docs.conda.io/en/latest/miniconda.html
  5. https://docs.anaconda.com/anaconda/install/windows/
  6. https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#creating-an-environment-with-commands