Bienvenido a Python: Preparar un entorno virtual

~$ python
Python 3.7.6 (default, Jan 8 2020, 19:59:22)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import pandas as pd
>>> print(pd.__version__)
1.0.1

Python es uno de los lenguajes de programación más populares de propósito general y de alto nivel; preferido por su legibilidad y su sintaxis fácil de aprender por aquellos que se inician en el mundo de la programación. Mientras que los programadores pueden elegir entre una gran variedad de bibliotecas y herramientas en constante crecimiento para desarrollar proyectos en desarrollo web, aplicaciones de escritorio, educación, computación científica y numérica, inteligencia artificial, desarrollo de juegos y más. Estas características hacen que importantes organizaciones como Google, Facebook, Spotify, Netflix, CERN y la NASA usen Python.

En esta guía aprenderemos sobre la importancia de los entornos virtuales Python, cómo crear, configurar y administrar entornos separados para sus proyectos de Python.

Al elaborar este artículo para la configuración de entornos virtuales Python, nos encontramos trabajando en un ordenador con el sistema operativo Feren OS, una distribución Linux; sin embargo, las instrucciones de esta guía deberían funcionar bien en otras distribuciones.


Antes había un debate sobre que versión de Python usar, Python 2.x o Python 3.x; pero, a partir de enero de 2020, Python 2 no recibe más soporte oficial, es decir, no habrá más actualizaciones ni correcciones de errores, y casi todas las bibliotecas populares han portado su código. Como tal, recomendamos aprender y usar Python 3. Puede verificar la versión de Python ejecutando la instrucción:

$ python --version

¿Qué es un entorno virtual?

Un entorno virtual de Python es un ambiente independiente a la instalación local que incluye la instalación de una versión particular de Python y una cantidad de librerías adicionales. Siendo el objetivo principal de los entornos virtuales, crear un entorno aislado para cada proyecto de Python. Gracias a esto podemos tener distintos entornos virtuales con diferentes versiones de Python y una versión concreta de cada librería sin crear ningún tipo de conflicto.

Lo mejor, es que no hay límite para la cantidad de entornos que se puede tener, ya que estos son solo directorios que contienen scripts.

Fig.1 - Entornos vituales Python.

La respuesta corta es: los entornos virtuales son la forma en que Python separa las dependencias entre proyectos.

¿Porqué necesitamos un entorno virtual?

Ya que un entorno es específico para un proyecto particular y no crea conflictos con las dependencias de otros proyectos, podemos trabajar en un $proyecto A$ y usar la versión $1.3$ de la librería $X$; también desarrollar un $proyecto B$ con la versión $2.0$ de la librería $X$.
Entonces, podemos resumir las razones para usar los entornos virtuales de Python:
  1. Organización: para evitar problemas de compatibilidad de versiones de librerías y diferentes versiones de proyectos es útil organizar en entornos virtuales.
  2. Estabilidad: las librerías de Python se actualizan frecuentemente, esto hace que tarde o temprano nos encontremos con problemas de compatibilidad entre sus versiones. Con los entornos virtuales podemos trabajar con diferentes versiones de una librería en diferentes entornos, de esta manera podemos hacer pruebas con las versiones más actualizadas antes de decidir su uso para un proyecto particular.
  3. Diferencia de versiones: aún existen muchas aplicaciones en uso desarrolladas con la versión de Python 2.x, y como programadores entendemos lo importante que es actualizarnos con nuevas tecnologías, pero no por ello debemos quedarnos con una sola y olvidar versiones anteriores. Por ejemplo, Feren OS viene preinstalado con Python 2.7 y Python 3.7 pero no la versión más actual y estable que es Python 3.8.
Podemos verificar la versión instalada en nuestro sistema, escribiendo en la terminal:
$ python -V
$ python3 -V

Crear un entorno virtual

Existen varias herramientas para crear entornos virtuales, algunas son: pyenv, pyenv-virtualenv, virtualenvwrapper, pyenv-virtualenvwrapper, pyvenv y pipenv creado por Kenneth Reitz (autor de $requests$).

Una biblioteca muy popular para la creación de entornos virtuales es virtualenv, compatible con múltiples versiones de Python pero necesita ser instalado. Dado el presente y futuro de Python 3, enfatizamos más en esta versión que ya tiene integrado el módulo venv.

Comenzamos creando un nuevo directorio para trabajar con entornos virtuales.

$ mkdir mis-proyectos

Ahora creamos un nuevo entorno virtual dentro del directorio creado.

$ python3 -m venv proyectoA

La opción -m en la línea de comando, le dice al intérprete que ejecute el módulo venv. El segundo parámetro, proyectoA, es el nombre del entorno virtual. Esta instrucción crea un directorio llamado proyectoA que contiene una estructura de árbol que se puede visualizar escribiendo el comando.

$ tree proyectoA

Para sistemas basados en debian puede ser necesario instalar previamente el paquete python3-venv, usando la siguiente instrucción:

$ apt-get install python3-venv

Activar un entorno virtual

El script de activación se encuentra en el directorio $bin$; para utilizar los recursos de un entorno se debe activar. Para ello se ejecuta la siguiente instrucción.

$ source proyectoA/bin/activate

A continuación observamos como prefijo el nombre del entorno:

(proyectoA) $

Esto significa que el intérprete de Python solo usará los paquetes y configuraciones de este entorno. Y podemos verificar la versión de Python del entorno con las instrucciones ya conocidas.

Instalando librerías en un entorno virtual

Una vez activado el entorno virtual, podemos realizar la instalación de paquetes necesarios para el proyecto, en este ejemplo vamos a instalar la librería pandas, una herramienta de análisis y manipulación de datos de código abierto, rápida, potente, flexible y fácil de usar. Para ello usamos $pip$, un sistema de gestión de paquetes utilizado para instalar y administrar paquetes de software escritos en Python.

(proyectoA) ~$ pip3 install pandas

Ahora, podemos importar la librería en el entorno creado.

>>> import pandas as pd

Si intentamos usar esta librería en un entorno donde no se ha instalado, se recibe un mensaje de error, para ejemplo activamos el entorno del $proyectoB$ e intentamos cargar la librería.

$ source proyectoB/bin/activate
(proyectoB) ~$ python
>>> import pandas as pd
Traceback (most recent call last):
File "", line 1, in
ModuleNotFoundError: No module named 'pandas'

Desactivar un entorno virtual

Para desactivar el entorno virtual se ejecuta el siguiente comando.

(proyectoA) $ deactivate

Y volvemos al entorno principal donde no aparece el nombre del entorno virtual como prefijo.

~ $

Eliminar un entorno virtual

Eliminar un entorno virtual es tan fácil como eliminar un directorio, desde la terminal ejecutamos la siguiente instrucción.

~ $ rm -rf proyectoA

Conclusiones

Ahora podemos crear diferentes entornos, ya sea para empezar nuestro primer programa en Python, el popular Hola Mundo; o desarrollar proyectos más avanzados, videojuegos, ciencia de datos, procesamiento digital de imágenes, y mucho más. Al mismo tiempo empezar otros proyectos similares usando la versión más reciente de Python y nuevas versiones de las librerías.

Python

Publicar un comentario

0 Comentarios