Pitón

Entornos virtuales en Python 3

Entornos virtuales en Python 3
Como la mayoría de la gente, odio instalar paquetes innecesarios en mi estación de trabajo. Una vez que haya terminado con ellos, desinstalarlos nunca es suficiente. Los paquetes dejan toneladas de carpetas y archivos. Requieren muchos otros paquetes (oscuros) también dejados atrás a raíz de las cosas. De forma lenta pero segura, estas cosas se acumulan en su estación de trabajo y, si bien es posible que no ocupen una parte significativa de su espacio en disco, pueden causar otros problemas.

Dependencias más antiguas

Los paquetes más antiguos pueden quedarse y su código Python los usará felizmente. Esto no es un problema si sus scripts de Python están diseñados para ejecutarse localmente y no para fines industriales. Los científicos de datos, los estudiantes e incluso las personas normales que automatizan sus tareas diarias pueden seguir usando los paquetes más antiguos sin mucho problema.

El problema comienza cuando envía su código a producción. Cuando haga eso, es probable que solo envíe su script principal y no todas las dependencias del paquete. Por ejemplo, si ha escrito un microservicio para que se envíe como función AWS Lambda, las primeras líneas pueden importar un módulo de solicitud como este:

solicitud de importación

El paquete de solicitud proporcionado por AWS lambda será diferente del anterior y, como resultado, el programa podría fallar.

Conflictos

Los conflictos también pueden aparecer cuando diferentes proyectos usan diferentes versiones del mismo paquete. Quizás algunos de sus proyectos más antiguos necesiten los paquetes de pip más antiguos. Pero es posible que necesite el paquete más nuevo para otros proyectos. Ejecutando pip install -U actualizará el paquete en su sistema operativo causando problemas cuando vuelva a mantener sus proyectos anteriores.

Entornos virtuales de Python

Si está utilizando cualquier versión de Python anterior a 3.5, puede utilizar un módulo incorporado llamado venv para crear lo que se denominan 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 pueden 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 dentro de esta carpeta. Si ejecuta pip install, 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á utilizando 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.

Instalación de venv y creación de entornos virtuales

Ubuntu 18.04 LTS sale de la caja con Python 3.6.x, pero el módulo venv de Python no está instalado, ni pip. Instalemos solo venv.

$ apt instalar python3-venv

A continuación, vamos al directorio dentro del cual desea que se cree su directorio de Entorno Virtual. Para mi es ~ / project1

$ cd ~ / proyecto1

Cree su venv con el siguiente comando, observe que my-env es solo el nombre de ese entorno, puede nombrarlo como desee:

$ python3 -m venv mi-env

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

Una vez que el comando haya terminado de ejecutarse, verá una nueva carpeta ~ / project1 / my-evn. Para activar el entorno virtual my-env, deberá:

  1. Correr,
    $ fuente ~ / proyecto1 / mi-env / bin / activar si está usando Bash.
    Hay scripts alternativos llamados activar.pescar y activar.csh para las personas que usan conchas de pescado y csh, respectivamente.
  2. En Windows, la secuencia de comandos 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á utilizando PowerShell.

Usar entornos virtuales

Una vez que ejecute el script con éxito, notará que el indicador 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 listar los paquetes instalados usando el comando 'pip freeze'
(mi-env) $ pip3 congelar
certifi == 2018.10.15
chardet == 3.0.4
idna == 2.7
pkg-resources == 0.0.0
solicitudes == 2.20.1
urllib3 == 1.24.1

Siempre que el entorno virtual esté activo (como lo indica el indicador), todos los paquetes se guardarán solo en el directorio del entorno virtual (my-env), sin importar dónde se encuentre en el sistema de archivos.

Para salir del entorno virtual, puede escribir deactivate en el indicador y volverá a utilizar 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. Puede crear tantos de estos entornos como desee.

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.org. Anteriormente, solíamos tener muchas implementaciones de terceros llamadas virtualenv, pyenv, etc.

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

Los mejores juegos de línea de comandos para Linux
La línea de comandos no es solo su mayor aliado cuando usa Linux, también puede ser la fuente de entretenimiento porque puede usarla para jugar muchos...
Las mejores aplicaciones de mapeo de gamepad para Linux
Si te gusta jugar juegos en Linux con un gamepad en lugar de un sistema de entrada de teclado y mouse típico, hay algunas aplicaciones útiles para ti....
Herramientas útiles para jugadores de Linux
Si le gusta jugar juegos en Linux, es probable que haya utilizado aplicaciones y utilidades como Wine, Lutris y OBS Studio para mejorar la experiencia...