Una de las máximas del desarrollo de software es no reinventar la rueda, y en aras de respetar este principio, muy a menudo, sino es que siempre, los programadores utilizamos código prefabricado y empaquetado en bibliotecas. Dependiendo de las necesidades del sistema que estemos desarrollando, puede que no sea conveniente instalar esos paquetes directamente en nuestro sistema, ya sea porque no las necesitemos más que para un proyecto en particular, o por que entren en conflicto con otros componentes del ambiente.
Dado este problema, una estrategia muy socorrida es aislar el ambiente de desarrollo del resto de nuestro sistema lo cual incluye también a las dependencias de nuestro proyecto; a esto se le llama: ambiente virtual.
Desde la versión 3 de Python, la biblioteca estándar incluye el módulo venv, que permite crear ambientes virtuales muy fácilmente, para ello solo ejecuta el módulo especificando un directorio en el que se guardará la distribución de Python para nuestro ambiente virtual:
➜ ~ python3 -m venv .venvs/hola-mundo
No es necesario que el directorio exista, de hecho es mejor dejar que Python se haga cargo de crearlo. Al terminar de ejecutarse el comando anterior, puedes echarle un vistazo al directorio nuevo y verás algo como esto:
~/.venvs/hola-mundo ├── bin │ ├── activate │ ├── activate.csh │ ├── activate.fish │ ├── easy_install │ ├── easy_install-3.5 │ ├── pip │ ├── pip3 │ ├── pip3.5 │ ├── python -> python3 │ └── python3 -> /usr/bin/python3 ├── include ├── lib │ └── python3.5 ├── lib64 -> lib ├── pyvenv.cfg └── share
Del árbol mostrado arriba hay que destacar que el directorio python3.5/
, contiene una distribución completa de Python, en la cual se instalaran todos los paquetes que necesitemos. El directorio bin/
por su parte incluye herramientas para activar el ambiente virtual, instalar paquetes y el enlace para llamar al intérprete de Python.
Una vez creado el ambiente virtual, el siguiente paso es activarlo, para ello, hay que ejecutar el contenido del archivo bin/activate
:
➜ ~ source .venvs/hola-mundo/bin/activate
Ahora supongamos que para un proyecto en específico, necesitamos cierta versión de Python (ya sea porque en esa versión se corrigió un bug crítico para nuestro software, o por compatibilidad con otros componentes). Es posible tener ambientes virtuales con diferentes versiones de Python.
Primero ve al sitio de Python y en la sección Downloads busca el enlace All releases para elegir el paquete que necesites. Si no quieres navegar mucho, puedes ir directamente a la sección de descargas a través de este enlace.
➜ ~ wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz ➜ ~ tar -zxf Python-3.6.3.tgz ➜ ~ cd Python-3.6.3
Una vez descargado el paquete, procede a instalarlo. Para mantener el orden en tu sistema, te sugiero utilizar un directorio de instalación como /opt
o /usr/local
, de este modo, la distribución de Python estará disponible para cualquier usuario de tu sistema, pero si no te gusta compartir, también está la opción de instalarlo en un directorio privado ($HOME/.lib
, por ejemplo):
➜ ./configure --prefix=/opt/lib ➜ make ➜ make install # Como root
Una vez instalado el paquete, puedes crear ambientes virtuales utilizando el intérprete de la versión que quieres:
➜ /opt/lib/python3.6.3/bin/python3 -m venv ~/.venvs/3.6.3/ambiente
Y activarlo de la misma manera que antes:
➜ source ~/.venvs/3.6.3/ambiente/bin/activate
Y listo. Eso es todo lo que necesitas saber para empezar a trabajar con los ambientes virtuales de Python, espero que esto te sirva para tus propios proyectos.