Crear entornos virtuales en Python para desarrollar apps en Django o Flask

En esta entrada vamos a hablar sobre los espacios virtuales en Python; específicamente nuestro caso de interés que sería para crear aplicaciones en Django o en Flask.

Los espacios virtuales son sencillamente una herramienta utilizada para crear un entorno de Python aislado del resto del Sistema Operativo y de esta manera podemos desarrollar nuestras apps en Python con versiones específicas de un framework, Python o sus dependencias.

Específicamente se emplean al momento del desarrollo de software con Python; es muy común querer emplear varias versiones de un mismo paquete en diferentes proyectos; y para evitar estar instalando y desinstalando (ya que no podemos instalar dos veces un paquete en nuestro SO o venv), podemos crear un ambiente con el objetivo específico de aislar estas múltiples versiones de este o varios paquetes; por tal motivo en este espacio se encontraran solamente los paquetes que vas a emplear para desarrollar tus aplicaciones en Python, ya sea nativo o con algún framework como Django o Flask.

En definitiva, con los entornos virtuales podemos instalar una versión específica de ese paquete que necesitamos para un proyecto o proyectos en particular, así como el resto de las dependencias que tenga un proyecto.

Para qué emplear los espacios virtuales en la práctica

Lo siguiente que te puedes preguntar es para qué vamos a emplear los espacios virtuales o venv en Python; los venv son empleados para crear un espacio aislado de nuestro SO, con esto, podemos configurar qué versión de Python queremos emplear (en caso de que tengamos múltiples instalaciones de Python en tu equipo) o instalar paquetes específicos para un proyecto; y este viene siendo uno de los puntos más interesante de emplear los espacios virtuales de Python.

¿Cómo Instalar un entorno virtual?

Nosotros podemos hacernos con la herramienta que nos permite crear venv o entornos virtuales en nuestro equipo; que como puedes ver, es solamente un paquete que lo podemos hacer mediante la pip que recuerda que ya contamos con la misma en versiones recientes de Python:

pip3 install virtualenv

Creando un venv

Ya con esto podemos crear los espacios virtuales; para eso el siguiente comando:

virtualenv <myproject>

En donde <myproject> es el nombre de tu espacio virtual; ahora bien; con el comando anterior se creó una carpeta con el nombre del venv que definistes en el comando anterior, y es esa carpeta tu espacio virtual ya listo para emplear.

Ahora, para emplear el espacio virtual anterior simplemente tenemos que movernos mediante nuestra CMD o terminal hacia dentro de la carpeta llamada Script; que es donde se encuentran nuestros Script para poder gestionar el espacio virtual mediante los archivos binarios contenidos en la misma; para activar o desactivar el ambiente virtual.

Activar / Desactivar entorno virtual

Estando en la ubicación comentada anteriormente, verás que tenemos varios archivos para trabajar con nuestro entorno o espacio virtual en Python, algunos llamados activate / deactivate que nos permiten activar o desactivar el espacio virtual.

Lo primero que quisiéramos hacer sería activar nuestro ambiente virtual:

activate

O si queremos desactivar el entorno virtual:

deactivate

Este sería nuestro estado inicial antes de ejecutar el comando de activate dentro de la carpeta Script:

C:\Users\andre\OneDrive\Escritorio\myproject\Scripts>

Ahora, vamos a activar es espacio virtual con el comando de:

activate

Y ahora nuestra terminal luce de la siguiente manera:

venv activado en terminal o CMD

Y con esto podemos realizar todo lo que queramos; por ejemplo, podemos crear un proyecto específico en Flask o Django o simplemente el último en el mercado

pip install django

Caso práctico: Obtener todos los paquetes de un venv o SO

Por ejemplo, supone que tienes versiones específicas de un proyecto de Flask, Django o cualquier otra cosa; en caso del proyecto que seguimos en el curso de Django anterior sería el siguiente:

appdirs==1.4.3
asgiref==3.2.4
astroid==2.3.3
certifi==2020.4.5.1
cffi==1.14.0
chardet==3.0.4
colorama==0.4.3
cryptography==2.9
defusedxml==0.6.0
diff-match-patch==20181111
distlib==0.3.0
Django==3.0.4
django-admin-interface==0.12.2
django-bootstrap-form==3.4
django-colorfield==0.3.0
django-cors-headers==3.2.1
django-debug-toolbar==2.2
django-filter==2.2.0
django-flat-responsive==2.0
django-flat-theme==1.1.4
django-grappelli==2.14.1
django-import-export==2.0.2
django-material==1.6.3
django-sql-explorer==1.1.3
djangorestframework==3.11.0
easy-thumbnails==2.7
et-xmlfile==1.0.1
filelock==3.0.12
idna==2.9
isort==4.3.21
jdcal==1.4.1
lazy-object-proxy==1.4.3
MarkupPy==1.14
mccabe==0.6.1
odfpy==1.4.1
openpyxl==3.0.3
paypalrestsdk==1.13.1
Pillow==7.0.0
pycparser==2.20
pylint==2.4.4
PyMySQL==0.9.3
pyOpenSSL==19.1.0
pytz==2019.3
PyYAML==5.3.1
requests==2.23.0
rjsmin==1.1.0
six==1.14.0
sqlparse==0.3.1
tablib==1.1.0
unicodecsv==0.14.1
urllib3==1.25.9
virtualenv==20.0.17
wrapt==1.11.2
xlrd==1.2.0
xlwt==1.3.0

Puedes obtener todos los paquetes instalados en tu SO o ambiente virtual con el comando de:

pip freeze

Y puedes guardarlo en un archivo para que puedas especificar específicamente cuales son las versiones específicas de tu proyecto:

pip freeze > requirements.txt

Que luego puedes instalar fácilmente mediante:

pip install -r requirements.txt

Por lo tanto, fácilmente puedes crear un ambiente para un proyecto en particular o simplemente para el proyecto que estás llevando a cabo empleando los ambientes virtuales; cómo ves la enorme ventaja que tenemos es que podemos instalar versiones específicas de nuestros paquetes.

Ya en este punto estamos listos y podemos empezar a desarrollar nuestras aplicaciones en Flask o empezar a desarrollar nuestras aplicaciones en Django.

- Andrés Cruz

In english
Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz En Udemy

Acepto recibir anuncios de interes sobre este Blog.