Posts | Tags | Categories | Archive

Entornos virtuales en python 3.3

Con la nueva versión de python 3.3 se ha incorporado la propuesta PEP-405 que añade al repertorio interno de python la posibilidad de crear entornos virtuales de modo parecido a virtualenv (vimos esta herramienta hace poco al hablar de la instalación de módulos.

Tal como lo define PEP-405: “Los entornos virtuales poseen su propio conjunto de paquetes instalados localmente, segregados del resto de paquetes instalados del sistema”. Para crear y administrar estos entornos virtuales, se incluye el módulo venv, así como el script pyvenv.py.

Para crear un entorno virtual se puede utilizar el script pyvenv (con python 3.3):

$ pyvenv /ruta/al/nuevo/entorno/virtual

En windows, probablemente haya que ejecutar el script que se encuentra en "C:\> Python33\Tools\Scripts\pyvenv.py". Posiblemente sea más sencillo ejecutar directamente el módulo venv:

$ python -m venv /ruta/al/nuevo/entorno/virtual

Entrando dentro del nuevo directorio, activamos el entorno de modo similar a como hacíamos con virtualenv:

$ cd /ruta/al/nuevo/entorno/virtual
$ source bin/activate

Hay que notar que el script activate se debe ejecutar con source ya que necesita cambiar algunas variables del entorno de ejecución actual.

En windows, se debe ejecutar el script Scripts\activate.bat.

C:\> cd entorno_virtual
C:\> Scripts\activate.bat

Una vez activado el entorno veremos que el prompt de la línea de comandos ha cambiado para indicarnos que estamos dentro. Las variables de entorno han cambiado, como puedes comprobar si miras $PATH. A partir de aquí, la instalación de paquetes con easy_install o pip se realizarán dentro del entorno. A diferencia con virtualenv, el módulo venv no instala en nuestro entorno ninguna de estas herramientas, por lo que lo primero que tendremos que hacer será instalarlas:

(py3.3) $ curl -O http://python-distribute.org/distribute_setup.py
(py3.3) $ python distribute_setup.py
(py3.3) $ easy_install pip

Para desactivar el entorno se ejecuta deactivate.

Aunque venv sigue el mismo funcionamiento que virtualenv, tiene notables carencias:

  • No permite configurar versiones distintas de python

  • No replica la instalación python del sistema en la copia local

  • No permite independizar el entorno virtual del la ruta donde se crea (no relocatable)

En definitiva, los entornos virtuales creados con venv no son completamente independientes de la instalación python del sistema como sí puede hacer virtualenv. Esperemos que se amplien las opciones con nuevas versiones de python. De momento, seguiremos con virtualenv.

© Chema Cortés. Built using Pelican. Theme is subtle by Carey Metcalfe. Based on svbhack by Giulio Fidente.