Читать книгу Python a fondo - Óscar Ramírez Jiménez - Страница 53
1.13 MANEJO DE ENTORNOS VIRTUALES
ОглавлениеCuando se utiliza Python no solamente se pueden tener múltiples versiones del intérprete funcionando en el mismo sistema operativo, sino que se pueden tener múltiples versiones de los paquetes o librerías instalados siempre y cuando cada uno esté asociado a un intérprete independiente.
Por tanto, cuando se trabaja en varios proyectos y en el mismo sistema operativo, es común que se instalen versiones diferentes de los mismos paquetes de forma directa o indirecta (dado que hay paquetes que dependen de otros y a veces solo funcionan en versiones específicas). Por este motivo, la comunidad de Python ideó una forma de mantener los entornos de Python aislados unos de los otros y poder tener tantos como se desee. La solución se llamó entornos virtuales de Python (virtual environments).
Un entorno virtual se compone del intérprete en la versión que se haya elegido y todas las librerías o paquetes que se quieran usar, pero asegurándose de que el cambio o instalación de cualquier paquete o librería no afectará al sistema operativo o a ningún otro entorno virtual que se tenga instalado en la máquina, sino solamente al que se ha utilizado como destino.
Pip provee herramientas muy útiles a la hora de gestionar dependencias, dado que se pueden listar todas las dependencias instaladas en un entorno de Python con el comando freeze, para después guardar la salida en un fichero y poder instalar las mismas dependencias de forma automática, utilizando la opción –r y –U, para instalarlas recursivamente desde un fichero y actualizarlas a la versión especificada en el mismo:
De esta manera, se puede replicar fácilmente un entorno de Python con las mismas dependencias y requisitos que otro, utilizando simplemente el fichero de dependencias.
Virtualenv o venv
La herramienta más conocida para la creación de entornos virtuales en Python es venv. Esta permite crear entornos en la misma carpeta del proyecto, y se puede añadir un nombre específico al entorno virtual.
Venv viene preinstalado en Python 3, pero si se necesita usar en Python 2, existe la posibilidad de utilizar virtualenv, el cual se puede instalar utilizando pip (como cualquier otro paquete de Python).
Para su activación se utiliza el comando source sobre el fichero activate que se encuentra en la carpeta bin, como se ve a continuación:
Para desactivar el entorno virtual se puede ejecutar el comando deactivate.
Una vez activado el entorno virtual, cualquier paquete que se instale utilizando pip se instalará dentro del entorno virtual (específicamente en esa carpeta creada), y no en el sistema en general, evitando así las colisiones con otros paquetes o librerías.
Pipenv
Recientemente, la comunidad de Python ha desarrollado una herramienta que une virtualenv y pip para que trabajen juntos. Se llama pipenv (https://pipenv.kennethreitz.org/).
Usando pipenv se pueden crear entornos virtuales; instalar, actualizar o desinstalar dependencias; ver un gráfico de dependencias instaladas; abrir un intérprete de Python con el intérprete activado; comprobar vulnerabilidades de seguridad en las dependencias, y otras acciones de forma muy sencilla.
El paquete pipenv se puede instalar utilizando pip.
Pyenv
Para gestionar la instalación de varios intérpretes de Python con versiones diferentes, existe una herramienta llamada Pyenv (https://github.com/pyenv/pyenv), la cual permite hacer esta tarea de forma sencilla.