Introducción a los entornos virtuales en Python

En este artículo, aprenderá cómo comenzar con entornos virtuales en Python, tanto en sistemas operativos Windows como Linux.

Cuando comienza a trabajar en varios proyectos en su entorno de desarrollo local, a menudo se encontrará con problemas de dependencia. La creación de entornos virtuales para cada uno de sus proyectos puede ayudarlo a administrar mejor las dependencias y los requisitos del proyecto.

Para aprovechar la ventaja de los entornos virtuales en Python, aprendamos a crear y activar entornos virtuales. 👩🏽‍💻

¿Qué son los entornos virtuales?

Los entornos virtuales son entornos aislados e independientes que contienen el código y las dependencias de un proyecto.

Pero, ¿por qué debería usar entornos virtuales?

Bueno, los entornos virtuales te permiten instalar y usar diferentes versiones de las mismas bibliotecas para varios proyectos. El uso de entornos virtuales también garantiza que no haya cambios importantes cuando dos o más proyectos usan versiones diferentes. Entendamos esto con mayor detalle.

Instalación de paquetes en Python

La biblioteca estándar de Python incluye varios módulos útiles para pruebas unitarias, interacción con el sistema operativo, trabajo con fechas y horas, y más.

Sin embargo, cuando trabaje en proyectos de Python, a menudo necesitará instalar otros paquetes, desarrollados por la comunidad de Python. Esto es especialmente cierto para aplicaciones como web scraping para recopilación de datos, aprendizaje automático y aplicaciones web.

Para instalar y administrar estos paquetes, puede usar conda o pip.

Cada proyecto requiere un conjunto específico de paquetes que debe instalar. Sin embargo, cuando instala todos los paquetes en su entorno de desarrollo en su máquina local, todos los proyectos comparten los paquetes instalados globalmente.

¿Por qué es esto un problema?

Bueno, es posible que tenga N paquetes en su entorno de desarrollo. Sin embargo, el proyecto en el que está trabajando actualmente puede requerir solo 3 de ellos. Cuando todos sus proyectos comparten instalaciones comunes, es muy difícil identificar cuál de los proyectos requirió cuál de los paquetes instalados: las dependencias asociadas con cada proyecto.

Hay otra limitación a este enfoque. Suponga que tiene un proyecto Django 2.2 en su biblioteca de proyectos. Decide comenzar a trabajar en un proyecto que usa Django 4. Así que instala la versión más reciente de Django en el mismo entorno de desarrollo.

¿Qué sucede con la instalación existente?

Se elimina y se reemplaza por la versión de Django que instaló. Con las versiones estables más recientes, es posible que ciertas características hayan quedado obsoletas. Y es posible que sus proyectos anteriores de Django no funcionen como se esperaba.

Resumiendo nuestra discusión hasta ahora: la administración de dependencias se vuelve difícil cuando todos los paquetes están instalados en un entorno común porque los proyectos requieren su propio conjunto de bibliotecas para ejecutarse.

Cómo funcionan los entornos virtuales

Hasta ahora, hemos visto los desafíos asociados con la instalación de paquetes en un entorno de desarrollo global (instalaciones en todo el sistema). Esto nos motiva a comprender cómo los entornos virtuales abordan esta limitación.

Cuando crea y activa un entorno virtual para sus proyectos de Python, puede instalar solo los paquetes necesarios para el proyecto actual.

Volviendo al ejemplo de los proyectos de Django, con entornos virtuales, puede ejecutar proyectos de Django 2.2 y Django 4, sin ningún conflicto. Esto se debe a que las instalaciones de Django ya no son instalaciones de todo el sistema, sino que están confinadas a los entornos virtuales de los respectivos proyectos.

En esencia: los entornos virtuales son entornos aislados que contienen tanto el código como las dependencias de un proyecto.

Ventajas de los Entornos Virtuales

Ahora que ha aprendido cómo funcionan los entornos virtuales en Python, enumeremos las ventajas de usarlos:

  • Los entornos virtuales proporcionan un entorno de desarrollo aislado para proyectos individuales, lo que nos permite instalar solo los paquetes necesarios para el proyecto específico.
  • Como los entornos virtuales de los proyectos son independientes y están aislados, diferentes proyectos pueden usar diferentes versiones de la misma biblioteca, según los requisitos. Con los entornos virtuales, no tiene que preocuparse por los permisos del sistema para instalar bibliotecas y configurar el entorno de desarrollo.
  • Una vez que instala paquetes en un entorno virtual, puede capturar las dependencias del proyecto en un archivo requirements.txt. Esto permite que otros desarrolladores repliquen el desarrollo y el entorno del proyecto e instalen los paquetes necesarios con un solo comando.

Hasta ahora, ha aprendido cómo funcionan los entornos virtuales y las ventajas de usarlos. Exploremos algunas herramientas populares que puede usar para crear y administrar entornos virtuales en Python.

#1. Entorno virtual

Virtualenv es una de las herramientas más utilizadas para crear y administrar entornos virtuales para proyectos de Python. Un subconjunto de la funcionalidad de virtualenv está disponible en el paquete venv. Sin embargo, el paquete virtualenv es más rápido y extensible en comparación con venv.

#2. Pipenv

Con pipnev, tiene la funcionalidad de entorno virtual de virtualenv y las capacidades de gestión de paquetes de pip. Utiliza pipfiles para administrar las dependencias del proyecto dentro de un entorno virtual usando.

Puede probar pipenv directamente desde el navegador en este patio de juegos de Pipenv.

#3. Conda

Si usa la distribución Anaconda de Python para el desarrollo, puede usar conda para la administración de paquetes y para crear entornos virtuales.

Para obtener más información, consulte esta guía completa sobre la gestión de entornos con conda.

#4. Poesía

Poetry es una herramienta de administración de paquetes que le permite administrar dependencias en todos los proyectos de Python. Para comenzar a usar Poetry, debe tener instalado Python 3.7 o una versión posterior.

#5. venv

Como se mencionó, venv ofrece un subconjunto de la funcionalidad de virtualenv, pero tiene la ventaja de que está integrado en la biblioteca estándar de Python, a partir de Python 3.3.

Está disponible con la instalación de Python y no requiere la instalación de paquetes externos. Lo usaremos en este tutorial para crear y trabajar con entornos virtuales. ✅

Cómo crear un entorno virtual de Python en Ubuntu

💬 Para continuar con el resto de este tutorial, debe tener una instalación local de Python 3. Asegúrese de ejecutar Python 3.5 o una versión posterior.

Esta sección describe los pasos para crear y activar entornos virtuales en una máquina Ubuntu Linux. Los mismos pasos también se pueden usar en otras distribuciones de Linux.

Para una administración más sencilla, creemos un directorio de proyecto y hagamos un cd en él; Crearemos venv dentro de este directorio.

$ mkdir my_project
$ cd my_project

La sintaxis general para crear un entorno virtual para su proyecto de Python es python3 -m venv . Al ejecutar este comando, se creará un entorno virtual llamado my_env en el directorio de trabajo actual:

$ python3 -m venv my_env

Cómo activar e instalar paquetes dentro de un entorno virtual

Una vez que haya creado el entorno virtual, puede activarlo e instalar los paquetes necesarios en él. Para activar el entorno virtual, puede ejecutar el siguiente comando:

$ source my_env/bin/activate

Una vez que haya activado un entorno virtual, puede ejecutar el comando pip list para obtener la lista de paquetes instalados:

$ pip list

Hasta el momento no hemos instalado ningún paquete, por lo que debería poder ver setuptools y pip, instalados de forma predeterminada, en cada uno de los entornos virtuales creados.

La instalación de pip dentro del entorno virtual le permite instalar los paquetes necesarios para el proyecto específico; por eso tienes un entorno de desarrollo independiente para cada proyecto.

Ahora que ha activado el entorno virtual, puede instalar paquetes específicos del proyecto usando pip. Como ejemplo, instalemos las solicitudes de Python, uno de los paquetes de Python más descargados, que proporciona varias funciones útiles para enviar solicitudes HTTP para trabajar con API web.

$ pip install requests

Cuando instale la biblioteca de solicitudes, verá que la biblioteca de solicitudes se instala junto con todos los paquetes que requiere.

$ pip list

Puede usar el comando pip freeze y redirigir la salida a un archivo requirements.txt, como se muestra:

$ pip freeze > requirements.txt

Si examina el contenido del directorio del proyecto actual, verá que se ha creado el archivo requirements.txt.

$ ls
# my_env requirements.txt

Puede desactivar el entorno virtual después de haber trabajado en el proyecto ejecutando el siguiente comando:

$ deactivate

Cómo crear un entorno virtual Python en Windows

En general, se prefiere un entorno Linux para el desarrollo. Si está en una máquina con Windows, puede considerar usar el subsistema de Windows para Linux (WSL) para configurar un entorno de terminal de Ubuntu para el desarrollo local.

Si está en una máquina con Windows, puede usar Windows PowerShell o el símbolo del sistema y crear entornos virtuales con el siguiente comando:

> python -m venv <path-to-venv>

Cómo activar un entorno virtual

La activación de entornos virtuales en una máquina con Windows es diferente dependiendo de si está trabajando en el símbolo del sistema o en Windows PowerShell.

Si está en el símbolo del sistema, ejecute el siguiente comando para activar el entorno virtual:

> <path-to-venv>Scriptsactivate.bat

Alternativamente, si usa Windows PowerShell, ejecutar este comando activará el entorno virtual:

> <path-to-venv>ScriptsActivate.ps1

Puede instalar todos los paquetes necesarios dentro del entorno virtual.

Para desactivar entornos virtuales, puede ejecutar el comando desactivar, tanto en el símbolo del sistema como en Windows PowerShell.

Conclusión

En este artículo, discutimos las limitaciones de las instalaciones en todo el sistema y cómo dificultan la administración de dependencias en los proyectos de Python. Los entornos virtuales en Python brindan una forma de administrar mejor las dependencias al tiempo que brindan un entorno de desarrollo aislado para proyectos individuales.

Entre las herramientas ampliamente utilizadas para crear y administrar entornos virtuales en Python, aprendió a usar venv, que está integrado en la biblioteca estándar de Python para crear y activar entornos virtuales.

Dentro del entorno virtual dedicado de un proyecto, se pueden instalar versiones de bibliotecas específicas para un proyecto. Estos requisitos luego se pueden capturar en un archivo requirements.txt, lo que permite a otros desarrolladores replicar el entorno del proyecto fácilmente.

Cuando comience su próximo proyecto de Python, asegúrese de usar entornos virtuales para una mejor gestión de dependencias. ¡Feliz codificación!🎉