Cómo activar y desactivar un entorno virtual de Python

PythonBeginner
Practicar Ahora

Introducción

Los entornos virtuales de Python son herramientas esenciales para gestionar las dependencias en proyectos de Python. Crean espacios aislados donde se pueden instalar paquetes sin afectar la instalación global de Python en el sistema. Esta aislamiento ayuda a prevenir conflictos entre diferentes proyectos que pueden requerir diferentes versiones del mismo paquete.

En este laboratorio (lab), aprenderás cómo crear, activar y desactivar entornos virtuales de Python. Estas habilidades son fundamentales para los desarrolladores de Python y te ayudarán a mantener entornos de desarrollo limpios, organizados y reproducibles para tus proyectos.

Comprender y crear entornos virtuales de Python

Comencemos por entender qué son los entornos virtuales de Python y por qué son importantes antes de crear uno.

¿Qué es un entorno virtual de Python?

Un entorno virtual de Python es una instalación aislada del intérprete de Python. Cuando se activa un entorno virtual, cualquier paquete que se instale se colocará en el directorio privado de ese entorno, no en la instalación global de Python del sistema. Este aislamiento ofrece varios beneficios:

  • Puedes utilizar diferentes versiones del mismo paquete para diferentes proyectos.
  • Puedes compartir fácilmente la lista exacta de paquetes requeridos con otros.
  • Puedes mantener tu instalación global de Python limpia y organizada.

Creando tu primer entorno virtual

Python 3.3 y versiones posteriores incluyen el módulo venv, que es la herramienta recomendada para crear entornos virtuales. Vamos a crear nuestro primer entorno virtual:

  1. Primero, asegúrate de estar en el directorio del proyecto:

    mkdir -p ~/project/python_env_demo
    cd ~/project/python_env_demo
  2. Crea un nuevo entorno virtual llamado myenv ejecutando:

    sudo apt-get update
    sudo apt-get install python3.10-venv -y
    python3 -m venv myenv
  3. Examinemos lo que se ha creado:

    ls -la myenv

    Deberías ver una salida similar a:

    total 20
    drwxrwxr-x 5 labex labex 4096 Sep 14 10:00 .
    drwxrwxr-x 3 labex labex 4096 Sep 14 10:00 ..
    drwxrwxr-x 2 labex labex 4096 Sep 14 10:00 bin
    drwxrwxr-x 2 labex labex 4096 Sep 14 10:00 include
    drwxrwxr-x 3 labex labex 4096 Sep 14 10:00 lib
    -rw-rw-r-- 1 labex labex   70 Sep 14 10:00 pyvenv.cfg

El comando venv creó un directorio llamado myenv con varios subdirectorios. Los más importantes son:

  • bin: Contiene el intérprete de Python, pip y los scripts de activación.
  • lib: Contiene los paquetes instalados para este entorno.
  • pyvenv.cfg: Archivo de configuración para el entorno virtual.

Ahora has creado con éxito un entorno virtual de Python listo para ser activado y utilizado.

Activar un entorno virtual de Python

Ahora que has creado un entorno virtual, debes activarlo antes de poder usarlo. La activación modifica las variables de entorno de tu shell para utilizar el intérprete de Python y los paquetes de tu entorno virtual en lugar de la instalación global de Python del sistema.

Cómo activar un entorno virtual

  1. Asegúrate de estar en el directorio del proyecto:

    cd ~/project/python_env_demo
  2. Activa el entorno virtual ejecutando:

    source myenv/bin/activate
  3. Observa que tu indicador de comando ha cambiado. Ahora muestra el nombre del entorno virtual entre paréntesis al principio del indicador:

    (myenv) labex:python_env_demo/ $

    Este indicador visual te ayuda a recordar que estás trabajando dentro de un entorno virtual.

Verificar la activación

Para confirmar que tu entorno virtual está activo y funcionando correctamente, puedes comprobar:

  1. Qué intérprete de Python se está utilizando:

    which python

    Deberías ver una salida como:

    /home/labex/project/python_env_demo/myenv/bin/python

    Esto muestra que el comando python ahora apunta al intérprete de Python de tu entorno virtual, no al del sistema.

  2. Qué pip (instalador de paquetes de Python) se está utilizando:

    which pip

    Deberías ver una salida como:

    /home/labex/project/python_env_demo/myenv/bin/pip

    Esto confirma que instalarás paquetes en tu entorno virtual, no en la instalación global de Python del sistema.

  3. Comprueba la versión de Python:

    python --version

    La salida mostrará la versión de Python que se está utilizando en tu entorno virtual.

Ahora has activado con éxito tu entorno virtual de Python. Cualquier comando de Python que ejecutes y cualquier paquete que instales utilizará este entorno aislado en lugar de la instalación global de Python de tu sistema.

Instalar paquetes en un entorno virtual

Uno de los principales beneficios de los entornos virtuales es la capacidad de instalar y gestionar paquetes de Python de forma aislada de la instalación global de Python del sistema. Exploremos cómo instalar paquetes en tu entorno virtual activado.

Instalar paquetes con pip

  1. Asegúrate de que tu entorno virtual sigue activado. Deberías ver (myenv) al principio de tu indicador de comando. Si no está activado, actívalo con:

    source myenv/bin/activate
  2. Vamos a instalar un paquete sencillo llamado requests, que se utiliza comúnmente para realizar solicitudes HTTP:

    pip install requests

    Verás una salida que muestra el proceso de descarga e instalación.

  3. Verifica que el paquete se haya instalado comprobando la lista de paquetes instalados:

    pip list

    Deberías ver requests y sus dependencias en la lista:

    Package            Version
    ------------------ ---------
    certifi            2025.1.31
    charset-normalizer 3.4.1
    idna               3.10
    pip                22.0.2
    requests           2.32.3
    setuptools         59.6.0
    urllib3            2.3.0

Usar el paquete instalado

Vamos a crear un sencillo script de Python para probar el paquete requests:

  1. Abre el editor y crea un nuevo archivo llamado test_requests.py en el directorio ~/project/python_env_demo:

    import requests
    
    response = requests.get('https://httpbin.org/get')
    print(f"Status Code: {response.status_code}")
    print(f"Content Type: {response.headers['content-type']}")
    print("\nResponse Body Preview:")
    print(response.text[:300] + "...")
  2. Guarda el archivo y ejecútalo:

    python test_requests.py
    run test_requests.py
  3. Deberías ver una salida similar a:

    Status Code: 200
    Content Type: application/json
    
    Response Body Preview:
    {
    "args": {},
    "headers": {
    "Accept": "_/_",
    "Accept-Encoding": "gzip, deflate",
    "Host": "httpbin.org",
    "User-Agent": "python-requests/2.32.3",
    "X-Amzn-Trace-Id": "Root=1-67ca4e9a-3b65928a0af016e74bc867b7"
    },
    "origin": "47.251.8.222",
    "url": "https://httpbin.org/g...

Esto demuestra que el paquete requests se ha instalado correctamente en tu entorno virtual y está funcionando adecuadamente.

Desactivar un entorno virtual de Python

Después de terminar de trabajar con un entorno virtual, es posible que desees volver al entorno global de Python del sistema. Este proceso se llama desactivación.

Cómo desactivar un entorno virtual

  1. Asegúrate de que tu entorno virtual está actualmente activado. Deberías ver (myenv) al principio de tu indicador de comando.

  2. Para desactivar el entorno virtual, simplemente ejecuta:

    deactivate
  3. Observa que tu indicador de comando ha vuelto a la normalidad. El prefijo (myenv) ha desaparecido:

    labex:python_env_demo/ $

Verificar la desactivación

Para confirmar que tu entorno virtual se ha desactivado y que estás de nuevo utilizando el Python del sistema, ejecuta las siguientes comprobaciones:

  1. Comprueba qué intérprete de Python se está utilizando:

    which python3

    Deberías ver una salida como:

    /usr/bin/python3

    Esto muestra que el comando python3 ahora apunta al intérprete de Python del sistema.

  2. Intenta ejecutar el script que creamos anteriormente:

    python3 test_requests.py

    Dependiendo de si el paquete requests está instalado en tu Python del sistema, es posible que veas un error:

    Traceback (most recent call last):
      File "/home/labex/project/python_env_demo/test_requests.py", line 1, in <module>
        import requests
    ModuleNotFoundError: No module named 'requests'

    Este error se produce porque el paquete requests se instaló en tu entorno virtual, no en el Python del sistema. Este es uno de los principales beneficios de los entornos virtuales: aislar los paquetes para diferentes proyectos.

Reactivar el entorno virtual

Si necesitas trabajar de nuevo en tu proyecto, puedes reactivar fácilmente el entorno virtual:

source myenv/bin/activate

Tu indicador de comando mostrará una vez más (myenv), lo que indica que el entorno virtual está activo.

Resumen de comandos comunes de entornos virtuales

A continuación, se muestra una referencia rápida de los comandos que hemos cubierto:

Comando Descripción
python3 -m venv myenv Crear un nuevo entorno virtual llamado "myenv"
source myenv/bin/activate Activar el entorno virtual
pip install package_name Instalar un paquete en el entorno virtual activo
pip list Listar los paquetes instalados en el entorno virtual activo
deactivate Desactivar el entorno virtual actual

Estos comandos forman la base para trabajar con entornos virtuales de Python, lo que te permite crear, usar y gestionar entornos de Python aislados para tus proyectos.

Resumen

En este laboratorio, has aprendido las habilidades esenciales para trabajar con entornos virtuales de Python:

  • Comprender el concepto y los beneficios de los entornos virtuales
  • Crear un nuevo entorno virtual con el módulo venv
  • Activar un entorno virtual para aislar tu trabajo en Python
  • Instalar paquetes dentro de un entorno virtual utilizando pip
  • Probar los paquetes instalados con un sencillo script de Python
  • Desactivar un entorno virtual cuando hayas terminado de trabajar con él

Estas habilidades forman la base de las buenas prácticas de desarrollo en Python. Al utilizar entornos virtuales, puedes:

  • Mantener las dependencias de tus proyectos aisladas entre sí
  • Evitar conflictos entre diferentes versiones de paquetes
  • Hacer que tus proyectos sean más reproducibles y fáciles de compartir
  • Mantener un entorno de desarrollo de Python limpio y organizado

Los entornos virtuales son una herramienta esencial para los desarrolladores de Python de todos los niveles, desde principiantes hasta expertos. A medida que continúes tu viaje en Python, el uso de entornos virtuales se convertirá en una parte natural de tu flujo de trabajo de desarrollo.