n el mundo de la ciberseguridad es común operar con programas o scripts de Python alojados en GitHub. Estas utilidades pueden depender de librerías incompatibles con nuestro sistema o de librerías que se consideren obsoletas (deprecated) y que, por tanto, no se puedan instalar —esto me pasó con pycrypto.
En esos casos podemos forzar la instalación de las dependencias y arriesgarnos a cargarnos el sistema entero, porque, a final de cuentas, vida nomás una. O, también podríamos reforzar el instinto de conservación —de la salud mental— e instalar las herramientas en ambientes aislados del sistema principal, por la simple y fútil preocupación de tener que reinstalar el Sistema Operativo completo.
Justamente para estos casos sirven los ambientes virtuales de python. Un ambiente virtual es como un corralito donde podemos dejar que los programas jueguen sin que terminen destruyendo el sillón, o el kernel.
Los pasos para montar un ambiente virtual son*:
- Crear el directorio:
mkdir Herramienta
2. Crear el ambiente virtual en el directorio:
python3 -m venv Herramienta
3. Activar el ambiente virtual:
source Herramienta/bin/activate
A partir de este momento ya estaremos interactuando desde el ambiente virtual.
4. Entrar al directorio creado al principio:
cd Herramienta
Aquí ya se podría descargar la utilidad de Github con git clone e instalar los requisitos con pip -r requirements.txt
5. Para desactivar el ambiente virtual:
deactivate
Una vez que el ambiente esté creado y la herramienta descargada, podremos usarla siempre que queramos con el comando source Herramienta/bin/activate
APUNTE: un ambiente virtual no añade las utilidades descargadas al PATH (por eso es seguro, por aislado). Por lo tanto, para usar la herramienta fuera de la carpeta donde la descargaron, tendrán que apuntar a ella con la ruta absoluta.
APUNTE 2: los ambientes virtuales de Python sólo sirven para utilidades escritas en Python. Si lo que necesitas es aislar programas escritos en otros lenguajes, ahí ya toca usar contenedores Docker.
*Esta guía está basada en sistemas Linux con base Debian.
**Uso la palabra “Herramienta” como ejemplo, ustedes usen lo que quieran.
