Crear ambiente virtual de Python
Python ofrece la posibilidad de crear un ambiente o entorno exclusivo para cada aplicación, cada ambiente poseerá las librerías necesarias que se requieren con la versión requerida de estas.
Así, cada aplicación funcionará de manera semi aislada sin perturbar la ejecución de otra o presentar conflictos de alguna incompatibilidad o convivencia de librerías similares de diferentes versiones.
Crear proyecto
Inicialmente se debe destinar un directorio exclusivo para el proyecto, después de esto, dentro del directorio se genera el árbol correspondiente para las librerías que trabajarán con dicho proyecto.
Crear el directorio del proyecto y puede ser con cualquier usuario del sistema:
mkdir miproyecto
Luego dentro del directorio cargar el ambiente o entorno virtual:
cd miproyecto
python -m venv venv
Este comando generará dentro del directorio del proyecto un árbol de ambiente para el proyecto.
Activación del entorno virtual
Una vez creado el árbol, se "enciende" el entorno virtual:
. venv/bin/activate
Posteriormente el prompt se vería de la siguiente manera:
(venv) nuxpy@pc:~/programacion/python/miproyecto $
Una vez activado el entorno se pueden realizar instalaciones de las librerías de la siguiente manera:
pip3 install flask
Estas instalaciones solo afectarán al entorno en cuestión.
Como observación o sugerencia general, antes de usar el instalador pip se recomienda actualizarlo, por ejemplo:
pip3 install --upgrade pip
Desactivación del entorno virtual
La desactivación simplemente cierra el prompt del ambiente virtual y retorna al prompt del usuario en cuestión. Para esto se puede usar el siguiente comando:
deactivate
Ejecución del proyecto
Dentro del directorio miproyecto se debe crear un fichero vacío llamado __init__.py, ejemplo:
touch __init__.py
Suponiendo que el árbol del proyecto se verá parecido al siguiente:
.
├── __init__.py
├── base.py
├── static
│ ├── css
│ └── js
├── templates
│ └── var
│ ├── db
│ └── log
└── venv
Una vez que se tiene el entorno, fichero __init__.py y árbol del proyecto se puede realizar un pequeño script que levante el proyecto, este debe ir ubicado fuera del directorio miproyecto y puede tener el siguiente contenido:
#!/home/nuxpy/programacion/python/miproyecto/venv/bin/python3
# -*- coding: utf-8 -*-
from miproyecto import base
if __name__ == "__main__":
base.main()
Así cuando se ejecute el proyecto las variables de entorno y librerías que usará serán las instaladas dentro del ambiente virtual declarado dentro del proyecto.
Replicación de paquetes
Si se desea replicar los paquetes de un ambiente virtual de python en otro ambiente para otra aplicaciones pero con las mismas librerías usadas en este ambiente virtual, se puede crear un fichero con las librerías o paquetes específicos de la siguiente manera:
Crear lista de paquetes
En primera instancia se abre el ambiente virtual con . /venv/bin/activate y posteriormente se hace lo siguiente:
(venv) nuxpy@pc:~/programacion/python/miproyecto_viejo $ pip3 freeze > requerimientos.txt
Esto genera la lista de librerías o paquetes usados en este entorno virtual de python.
Instalar lista de paquetes
Una vez que se tiene el fichero con la lista de paquetes del entorno virtual previo, se crea el nuevo entorno virtual y posteriormente se hace la instalación de todos los paquetes mediante la lista creada.
Es decir, se entra en el nuevo entorno virtual:
nuxpy@pc:~/programacion/python/miproyecto_nuevo $ . /venv/bin/activate
Posteriormente se hace la instalación de los paquetes:
(venv) nuxpy@pc:~/programacion/python/miproyecto_nuevo $ pip3 install -r ../miproyecto_viejo/requerimientos.txt
Paquetes instalar o compilar
Es posible que requieran programas para realizar instalación y compilación de otros programas durante determinados momentos dentro del ambiente virtual
De los programas más importantes pudieran ser los siguientes:
python3-all-dev
libpq-dev
Es probable que estos programas se requieran instalar desde el sistema operativo.