Entornos virtuales en Python 3

Entornos virtuales en Python 3
Como la mayoría de las personas, odio instalar paquetes innecesarios en mi estación de trabajo. Después de que hayas terminado con ellos, desinstalarlos nunca es suficiente. Los paquetes dejan una tonelada de carpetas y archivos. Requieren muchos otros paquetes (oscuros) que también quedan a raíz de las cosas. Lenta pero seguramente estas cosas se acumulan en su estación de trabajo y, aunque pueden no acaparar ninguna parte significativa de su espacio en disco, pueden causar otros problemas.

Dependencias más antiguas

Los paquetes más antiguos pueden permanecer y su código Python los usará felizmente. Esto no es un problema si sus guiones de Python están destinados a ejecutarse localmente, y no para fines industriales. Los científicos de datos, los estudiantes e incluso las personas regulares que automatizan su tarea cotidiana pueden seguir utilizando los paquetes más antiguos sin mucho problema.

El problema comienza cuando envía su código a la producción. Cuando haces eso, es probable que solo envíe su script principal y no todas las dependencias de los paquetes. Por ejemplo, si ha escrito un microservicio para ser enviado como función AWS Lambda, las primeras líneas podrían importar un módulo de solicitud como este:

solicitud de importación

El paquete de solicitud suministrado por AWS Lambda será diferente del anterior y, como resultado, el programa podría bloquear.

Conflictos

Los conflictos también pueden entrar en la imagen donde diferentes proyectos utilizan diferentes versiones del mismo paquete. Tal vez algunos de sus proyectos más antiguos necesitan los paquetes PIP más antiguos. Pero es posible que necesite el paquete más nuevo para otros proyectos. Ejecutar PIP Install -U actualizará el paquete en su sistema operativo, causando problemas cuando regrese a mantener sus proyectos anteriores.

Entornos virtuales de Python

Si está utilizando alguna versión de Python por encima de 3.5, puede usar un módulo incorporado llamado Venv para crear lo que se llama entornos virtuales de Python. Lo que hace este módulo es crear una carpeta o directorio aislado donde todos sus paquetes PIP y otras dependencias puedan vivir. La carpeta también contiene un script 'activar' en ella. Siempre que desee utilizar un entorno virtual en particular, simplemente ejecute este script después de lo cual solo se puede acceder a los paquetes contenidos en esta carpeta. Si ejecuta la instalación de PIP, los paquetes se instalarán dentro de esta carpeta y en ningún otro lugar. Una vez que haya terminado de usar un entorno, simplemente puede 'desactivarlo' y luego solo los paquetes PIP globales estarán disponibles para usted.

Si estás usando Ubuntu 18.04 y superior, ni siquiera necesita instalar el Administrador de paquetes PIP en todo su sistema. Pip solo puede existir dentro de su entorno virtual si lo prefiere de esa manera.

Instalar Venv y crear entornos virtuales

Ubuntu 18.04 LTS sale de la caja con Python 3.6.x, pero el módulo Python Venv no está instalado, tampoco lo es PIP. Instale solo Venv.

$ apt instalación python3-hvenv

A continuación, vamos al directorio dentro del que desea que se cree su directorio de entorno virtual. Para mi es ~/Project1

$ CD ~/Project1

Cree su Venv con el siguiente comando, observe que el My -NV es solo el nombre de ese entorno, puede nombrarlo lo que desee:

$ python3 -m venv my -ven

Nota: Algunas instalaciones de Python3, como las disponibles en Windows, llamas al intérprete de Python usando solo Python y no Python3, pero eso cambia de un sistema a otro. En aras de la consistencia usaré solo python3.

Después de que el comando haya terminado la ejecución, notará una nueva carpeta ~/proyecto1/my-evn. Para activar el entorno virtual my-env, tendrá que:

  1. Correr,
    $ Source ~/Project1/my-env/bin/activar Si estas usando Bash.
    Hay scripts alternativos llamados activación.peces y activar.CSH para personas que usan conchas de pescado y CSH, respectivamente.
  2. En Windows, el script se puede invocar ejecutando:
    >.\ my-env \ scripts \ activar.murciélago Si está utilizando el símbolo del sistema, o,
    >.\ my-env \ scripts \ activar.PS1 Si estás usando PowerShell.

Uso de entornos virtuales

Una vez que ejecute el script con éxito, notará que el mensaje cambia a algo como lo que se muestra a continuación, ahora puede instalar paquetes usando PIP:

(my-env) $ PIP3 Solicitudes de instalación
## Podemos enumerar los paquetes instalados utilizando el comando 'Pip Freeze'
(my-env) $ Pip3 Freeze
certifi == 2018.10.15
Chardet == 3.0.4
idna == 2.7
PKG-RESOURES == 0.0.0
Solicitudes == 2.20.1
urllib3 == 1.24.1

Mientras el entorno virtual esté activo (como lo indica el mensaje), todos los paquetes se guardarán solo en el Directorio de entorno virtual (MY-EV), sin importar dónde se encuentre en el sistema de archivos.

Para salir del entorno virtual, puede escribir desactivar en el aviso y volverá a usar la instalación de Python en todo el sistema. Puede notar que los nuevos paquetes que acabamos de instalar no se mostrarán en la instalación global de PIP.

Para deshacerse del entorno virtual, simplemente elimine la carpeta My-ENV que se creó después de ejecutar el módulo. Puedes crear tantos de estos entornos como quieras.

Conclusión

Con el módulo VenV, los entornos virtuales ahora están disponibles como una característica estándar de Python, especialmente si se instala desde Python.organizar. Anteriormente, solíamos tener muchas implementaciones de terceros llamadas VirtualEnv, Pyenv, etc.

Esto dio lugar a un software cada vez más hinchado como Anaconda, especialmente popular entre los científicos de datos. Es bueno finalmente tener una herramienta simplista para administrar los paquetes de Python sin tener que instalar mucha otra basura no relacionada. Puedes leer más sobre Venv aquí.