Entornos virtuales

Los entornos virtuales en Python se usan para aislar la ejecución de los scripts, de forma que ejecuten una versión determinada del intérprete y con unos paquetes también, de una versión predeterminada.

Para producir este aislamiento, se copian los archivos necesarios dentro de una carpeta y se ejecuta el intérprete de Python de forma virtual dentro de ella.

Estos son algunos de los entornos más conocidos.

Virtualenv

Virtualenv es un paquete de terceros que permite crear y usar entornos virtuales con diferentes versiones del intérprete de Python. Virtualenv crea una carpeta y copia dentro la estructura de datos de Python para tener sus propios binarios, paquetes, etc. Dependiendo del sistema operativo estos binarios pueden ser diferentes. Por ejemplo, en MacOS o Linux el directorio donde están los binarios se llama bin mientras que en Windows el directorio se llama scripts.

La utilidad de virtualenv se pone de manifiesto cuando se quieren mantener funcionando varios programas realizados con diferentes versiones del intérprete y diferentes versiones de paquetes, evitando, por ejemplo, el riesgo de que alguno de ellos deje de funcionar por alguna actualización del lenguaje. Con esto se consigue que cada implementación del entorno virtual, esté aislada de las otras.

La sintaxis para instalar virtualenv es:

pip3 install virtualenv

Para actualizarlo, una vez instalado, se utiliza el parámetro –upgrade, de la siguiente forma:

pip3 install virtualenv --upgrade

Si se ejecuta virtualenv –help, se muestra la ayuda:

virtualenv --help
You must provide a DEST_DIR
Usage: virtualenv [OPTIONS] DEST_DIR

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -v, --verbose         Increase verbosity.
  -q, --quiet           Decrease verbosity.
  -p PYTHON_EXE, --python=PYTHON_EXE
                        The Python interpreter to use, e.g.,
                        --python=python2.5 will use the python2.5 interpreter
                        to create the new environment.  The default is the
                        interpreter that virtualenv was installed with (/Syste
                        m/Library/Frameworks/Python.framework/Versions/2.7/Res
                        ources/Python.app/Contents/MacOS/Python)
  --clear               Clear out the non-root install and start from scratch.
  --no-site-packages    DEPRECATED. Retained only for backward compatibility.
                        Not having access to global site-packages is now the
                        default behavior.
  --system-site-packages
                        Give the virtual environment access to the global
                        site-packages.
  --always-copy         Always copy files rather than symlinking.
  --unzip-setuptools    Unzip Setuptools when installing it.
  --relocatable         Make an EXISTING virtualenv environment relocatable.
                        This fixes up scripts and makes all .pth files
                        relative.
  --no-setuptools       Do not install setuptools in the new virtualenv.
  --no-pip              Do not install pip in the new virtualenv.
  --no-wheel            Do not install wheel in the new virtualenv.
  --extra-search-dir=DIR
                        Directory to look for setuptools/pip distributions in.
                        This option can be used multiple times.
  --download            Download preinstalled packages from PyPI.
  --no-download, --never-download
                        Do not download preinstalled packages from PyPI.
  --prompt=PROMPT       Provides an alternative prompt prefix for this
                        environment.
  --setuptools          DEPRECATED. Retained only for backward compatibility.
                        This option has no effect.
  --distribute          DEPRECATED. Retained only for backward compatibility.
                        This option has no effect.

La sintaxis para crear un nuevo entorno virtual es:

virtualenv [opciones] directorio_destino

Las opciones mas usadas son:

–version muestra el número de versión del programa.

-p PYTHON_EXE, –python=PYTHON_EXE donde PYTHON_EXE es el interprete a usar. Por ejemplo –python=python2.7 crea un nuevo entorno virtual con la versión 2.7 de Python.

-v, –verbose muestra mas información al ejecutar el comando.

-q, –quiet muestra menos información al ejecutar el comando.

–clear limpia la instalación y comienza de cero. Se usa para restablecer un entorno virtual.

–system-site-packages         da al entorno virtual acceso al sitio global donde están los paquetes fuera del entorno virtual.

–always-copy siempre copia ficheros en lugar de crear enlaces simbólicos.

–relocatable modifica un entorno existente de virtualenv para convertirlo en reubicable, se modifican los scripts cambiando todos los paths absolutos en relativos.

–no-setuptools          No instala las setuptools en el nuevo entorno virtual.

–no-pip                                  No instala pip en el nuevo entorno virtual.

–no-wheel                 No instala wheel en el nuevo entorno virtual.

–extra-search-dir=DIR           directorio donde buscar las distribuciones de setuptools/pip. Esta opción puede ser usada múltiples veces.

–download descarga los paquetes pre-instalados desde PyPI.

–no-download, –never-download no descarga los paquetes pre-instalados desde PyPI.

–prompt=PROMPT provee un prefijo prompt alternativo para este entorno virtual.

Para ver un ejemplo de uso, el siguiente, instala un entorno virtualizado con la versión de Python 2.7.

~ virtualenv -p python2.7 entorno_python2.7

Python 2.7 debe de estar instalado previamente en el sistema para que se pueda crear el entorno virtual. Para activarlo hay que acceder dentro de la carpeta entorno_python2.7 y ejecutar el comando de activación:

En MacOS o Linux:

~ cd ./entorno_python2.7/
~ source bin/activate

En Windows:

cd .\entorno_python2.7\
Scripts\activate

El comando para desactivar el entorno virtual en cualquiera de los sistemas es:

deactivate

Con el entorno virtual iniciado se muestra el nombre del entorno entre paréntesis, con esto es posible determinar que está en funcionamiento el entorno virtual y que los programas o comandos Python que se ejecuten son los que contiene este entorno y no los del sistema.

Venv

Venv es un paquete que se instala con Python 3 que se puede usar de la siguiente forma:

python -m venv nombre_carpeta

El funcionamiento es parecido al de virtualenv salvo que venv por defecto no copia los binarios en las carpetas creadas, en su lugar crea enlaces simbólicos a la instalación global. La excepción está en Windows en cuya plataforma sí que los copia.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *