Python » Miscelánea » Crear Entornos Virtuales en Python

Crear Entornos Virtuales en Python

Un entorno virtual es un espacio donde podemos instalar paquetes específicos para un proyecto. Es decir, permite tener para un proyecto determinado un conjunto de paquetes/librerías aislados de la instalación principal de Python en nuestro sistema. Una razón para usar entornos virtuales es si por ejemplo tenemos muchos proyectos que utilizan una versión específica de una librería, pero queremos probar una versión más reciente de dicha librería sin crear errores en nuestros proyectos existentes.

Para la creación de entornos virtuales se recomienda utilizar el módulo venv, el cual viene instalado por defecto con la librería estándar de Python desde la versión 3.3. Por otro lado, la instalación de paquetes se realiza mediante la herramienta pip, la cual viene incluida por defecto a partir de Python 3.4. Como los comandos que vamos a ver en este post utilizan estas dos herramientas, se asume que se trabaja como mínimo con la versión 3.4.

Lista de comandos

Los siguientes comandos son válidos para el símbolo del sistema (CMD) de Windows, y la aplicación de terminal de macOS y Linux.

Comandos relacionados con la gestión de entornos virtuales

  • Crear un entorno virtual nuevo

En Windows, y asumiendo que Python está incluido dentro de las variables del sistema:

C:\>python -m venv c:\ruta\al\entorno\virtual

En macOS y Linux:

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

Es recomendado que la carpeta para el entorno virtual sea una subcarpeta del proyecto Python al que está asociado.

  • Activar un entorno virtual

En Windows:

C:\>c:\ruta\al\entorno\virtual\scripts\activate.bat

En macOS y Linux:

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

Sea cual sea nuestro sistema operativo sabremos que el entorno virtual se ha activado porque su nombre aparece entre paréntesis delante del promt.

  • Desactivar un entorno virtual

Este comando es idéntico para Windows, macOS y Linux:

$ deactivate
  • Eliminar un entorno virtual

En Windows:

C:\>rmdir c:\ruta\al\entorno\virtual /s

En macOS y Linux:

$ rm -rf ruta/al/entorno/virtual

Eliminar un entorno virtual es tan sencillo como eliminar la carpeta que lo contiene. Por ello, esta operación también se puede realizar desde el correspondiente administrador de archivos.

Comandos relacionados con la gestión de paquetes

La gestión de los paquetes instalados, sea en el entorno global de Python o en uno virtual, se realiza mediante la herramienta pip. Esta herramienta obtiene los paquetes que le mandamos instalar del Python Package Index. Para que los siguientes comandos funcionen bajo Windows, se asume que Python está incluido en las variables del sistema.

  • Instalar una nuevo paquete
$ pip install paquete

Siendo paquete el nombre del paquete/librería a instalar. Este comando instala también automáticamente las dependencias del paquete que deseamos instalar.

  • Eliminar un paquete
$ pip uninstall paquete

Siendo paquete el nombre del paquete/librería a desinstalar. Este comando no desinstala cualquier dependencia del paquete que desinstalamos.

  • Listar los paquetes instalados
$ pip list

Existe otro comando que lista los paquetes en formato del archivo requirements.txt. Este archivo contiene un listado de las versiones de los paquetes necesarios para ejecutar un proyecto en Python.

 $ pip freeze

En sistemas Windows podemos copiar la salida de este comando, pegarla en un editor de notas como Atom o Sublime Text (que también podemos usar como nuestro entorno de programación), y guardarla manualmente con el nombre requirements.txt. Sin embargo, si usamos macOS o Linux podemos guardar la salida directamente en un fichero de texto.

$ pip freeze > requirements.txt
  • Instalar los paquetes del fichero requirements.txt
$ pip install -r requirements.txt

Buenas prácticas con los entornos virtuales

Existen dos consideraciones adicionales a tener en cuenta respecto a los entornos virtuales:

  • No se debe añadir manualmente ningún fichero dentro de una carpeta que almacena un entorno virtual. Esta carpeta sólo debe contener los ficheros que se crean por defecto al crear el entorno virtual y los paquetes adicionales que hayamos instalado con el comando pip.
  • La carpeta del entorno virtual no debe incluirse a nuestra herramienta de control de versiones. En lugar de ello es recomendado añadir un fichero requirements.txt con el listado de los paquetes necesarios para ejecutar el proyecto.
Foto del autor

Albert Brugués

Soy doctor en informática médica y un apasionado de la tecnología y las nuevas oportunidades que brinda. Más en particular me encanta la inteligencia artificial y el desarrollo web. En este blog pretendo compartir los conocimientos de Python que he ido adquiriendo a lo largo de los años.

6 comentarios en «Crear Entornos Virtuales en Python»

  1. Excelente post, muy bien explicado, consistente y al grano… Felicitaciones!!!… Sin embargo tengo una pregunta, he creado mi entorno virtual desde windows y me funciona muy bien, pero al abrir el anaconda prompt, no me reconoce el entorno virtual que he creado en windows (me encuentro en el mismo folder donde he creado el entorno virtual). Mi lógica me dice que si debería reconocerlo, al final del día todo se basa en el mismo lenguaje y el mismo folder, pero no lo reconoce.

    Responder
    • Hola leo, ten en cuenta que venv y anaconda son gestores de entornos virtuales distintos. Seguro que el error viene por ahí.

      Responder
  2. Buen dia, me gusta mucho el contenido de tu Blog.
    Ya me inscribi, pero aun no eh recibido la Guia de desarrollo de aplicaciones.

    Responder
    • Hola Alberto, me alegra que este blog te sea útil.
      Para recibir la guía hay un paso previo que consiste en confirmar tu suscripción. Para ello recibirás un correo a la dirección que hayas indicado. En caso que no lo veas en tu bandeja de entrada puede ser que haya ido a la carpeta de spam.

      Responder
  3. Hola, gracias por el conocimiento, me ayudo bastante.

    Pregunta. El entorno virtual se crea según la versión de Python en la máquina? Si no es recomendable pasar la carpeta de venv en un controlador de versiones, git por ejemplo y los desarrolladores tienen versiones diferentes de python como se crearia el mismo entorno virtual? espero que se haya entendido.

    Responder
    • Hola Camilo, un placer de haberte ayudado.
      En cuanto a tu pregunta, sí, la versión que tengas de Python crea el entorno virtual y para trabajar con distintas versiones de Python puedes usar pyenv.

      Responder

Deja un comentario