Saltar a contenido

Configurar entorno virtual

Cuando instalamos Python3 obtenemos un único entorno global que es compartido por todos los proyectos y todo el código de Python. Si bien podríamos instalar Django y otros paquetes en el entorno global. Sin embargo sólo puedes instalar una versión en particular de cada paquete.

Cuidado

Las aplicaciones Python instaladas en el entorno global pueden entrar en conflicto potencialmente unas con otras (Ej. si dependen de diferentes versiones del mismo paquete).

Si instalamos Django dentro del entorno por defecto/global sólo podrás apuntar a una sóla versión de Django en la computadora. Esto puede ser un problema si quieres crear en el futuro nuevos sitios (usando las útilmas versiones de Django) pero manteniendo los sitios web que dependen de versiones más antiguas.

Como resultado, los desarrolladores experimentados normalmente configuran y ejecutan las aplicaciones Python dentro de entornos virtuales Python independientes.

Esquema de Entornos Virtuales de Python
graph TD
    B(<img src="https://enidev911.github.io/fullstack-python/assets/img/base.png" width='28' />Python 3.9)
    B---T[Entornos Virtuales]
    T-->C(<img src="https://enidev911.github.io/fullstack-python/assets/img/venv1.png" width='28' />Python 3.9)
    T-->D(<img src="https://enidev911.github.io/fullstack-python/assets/img/venv2.png" width='28' />Python 3.9)
    T-->E(<img src="https://enidev911.github.io/fullstack-python/assets/img/venv3.png" width='28' />Python 3.9)
    subgraph ''
    C-->CD[Django==2.0]
    D-->DD[Django==2.2]
    E-->ED[Django==3.2]
    end

Instalación de Software para crear entorno virtual

Después de instalar Python y pip, procedemos a instalar virtualenvwrapper (que incluye virtualenv) usando pip3:

bash
sudo pip3 install virtualenvwrapper

A continuación se añade las siguientes líneas en el archivo de inicio del shell (éste es un archivo oculto .bashrc o .zshrc si usas zsh)

export WORKON_HOME=$HOME/.virtualenvs # (1)!
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh #(2)!
  1. La variable WORKON_HOME determina en qué directorio se deben crear los entornos virtuales de Python.

  2. Por último, se debe agregar esta línea al archivo ~/.bashrc para especificar en dónde está ubicado el ejecutable de virtualenvwrapper.

Cómo crear entornos virtuales

Se debe ejecutar el comando mkvirtualenv más el nombre del entorno virtual Python que queremos crear:

bash
mkvirtualenv nombre_entorno

Cómo activar un entorno virtual

Para activar un virtualenv con Virtualenvwrapper solamente se necesita ejecutar el comando workon más el nombre del virtualenv en la terminal:

bash
workon django-test
created virtual environment CPython3.9.2.final.0-64 in 9185ms
  creator CPython3Posix(dest=/home/enidev911/.virtualenvs/django-test, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/enidev911/.local/share/virtualenv)
    added seed packages: pip==24.1, setuptools==70.1.0, wheel==0.43.0
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
virtualenvwrapper.user_scripts creating /home/enidev911/.virtualenvs/django-test/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/enidev911/.virtualenvs/django-test/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/enidev911/.virtualenvs/django-test/bin/preactivate
virtualenvwrapper.user_scripts creating /home/enidev911/.virtualenvs/django-test/bin/postactivate
virtualenvwrapper.user_scripts creating /home/enidev911/.virtualenvs/django-test/bin/get_env_detail

Cómo eliminar entornos virtuales

Al ejecutar el comando rmvirtualenv más el nombre del virtualenv, virtualenvwrapper se encarga de borrar el virtualenv con todas los paquetes que hayamos instalado en él:

bash
rmvirtualenv nombre_entorno