Creación de entornos virtuales de Python (venv)
Un entorno virtual es un espacio de ejecución independiente de Python que posee su propio intérprete, paquetes instalados y configuración, completamente aislado del entorno global del sistema.
Un entorno virtual de Python (Virtual Environment) es un entorno de ejecución independiente que te permite crear entornos de Python aislados para diferentes proyectos en la misma máquina.
Diferentes proyectos pueden ejecutarse en paralelo en sus propios entornos virtuales sin interferirse entre sí.
Cada entorno virtual tiene lo siguiente:
- Intérprete de Python
- Paquetes/bibliotecas instalados
- Variables de entorno
El entorno virtual permite que cada proyecto tenga su propio espacio de dependencias independiente, eliminando por completo los conflictos de versiones.
¿Por qué necesitas entornos virtuales?
- Aislamiento de proyectos: diferentes proyectos pueden usar distintas versiones de Python y bibliotecas de terceros
- Evitar la contaminación: los paquetes instalados solo afectan al entorno actual, no contaminan el Python global
- Dependencias controlables: a través de
requirements.txtregistro y reproducción precisos del entorno - Pruebas seguras: puedes actualizar o probar nuevos paquetes con tranquilidad, sin afectar a otros proyectos
Ejemplo de escenario:
- El proyecto A necesita la versión Django 3.2
- El proyecto B necesita la versión Django 4.0
- Si se instalan de forma global en el sistema, las dos versiones entran en conflicto
Herramientas de entornos virtuales
| Nombre de la herramienta | Tipo | Soporte de versiones de Python | Método de instalación | Características | Escenario de uso |
|---|---|---|---|---|---|
| venv(recomendado) | Módulo integrado | ≥ 3.3 | Sin instalación, integrado | Ligero, recomendado oficialmente, fácil de usar | Desarrollo general, proyectos cotidianos |
| virtualenv | Herramienta de terceros | 2.x y 3.x | pip install virtualenv |
Rico en funciones, compatible con múltiples versiones | Requiere compatibilidad con versiones anteriores o funciones avanzadas |
| conda | Incluido con Anaconda | 2.x y 3.x | Se instala con Anaconda/Miniconda | Gestión de paquetes para varios lenguajes, ecosistema de ciencia de datos | Proyectos de ciencia de datos y aprendizaje automático |
Si se necesita soporte para versiones más antiguas, se puede usar virtualenv (compatible con Python 2):
pip install virtualenv # 非必须,venv 通常够用
En este capítulo usaremosvenvcrear y gestionar entornos virtuales.
Crear un entorno virtual
Python 3.3+ incorpora de serievenvel módulo, sin necesidad de instalación adicional.
Flujo de uso
Descripción general del flujo de uso
Comprueba la versión de Python:
python3 --version # 或者 python --version
Crea un entorno virtual:
# 基本语法 python3 -m venv 环境名称
Por ejemplo, para crear un.venventorno virtual llamado:
Ejemplo
mkdir my_project && cd my_project
# Crear el entorno virtual (nombrarlo '.venv' es una convención común)
python3 -m venv .venv
Explicación de parámetros:
-m venv: usar el módulo venv.venv: el nombre del entorno virtual (se puede personalizar)
Estructura de directorios después de la creación
.venv/ ├── bin/ # 在 Unix/Linux 系统上 │ ├── activate # 激活脚本 │ ├── python # 环境 Python 解释器 │ └── pip # 环境的 pip ├── Scripts/ # 在 Windows 系统上 │ ├── activate # 激活脚本 │ ├── python.exe # 环境 Python 解释器 │ └── pip.exe # 环境的 pip └── Lib/ # 安装的第三方库
Activar el entorno virtual
Después de la activación, los comandos python y pip del terminal actual apuntarán automáticamente a ese entorno virtual; todas las operaciones de instalación se realizan en un espacio aislado.
macOS / Linux
source .venv/bin/activate
Windows(CMD / PowerShell)
.venv\Scripts\activate
Si la activación se realiza correctamente, el indicador de la línea de comandos normalmente mostrará el nombre del entorno:
(.venv) $
Comprueba si la activación ha surtido efecto:
# 查看 Python 路径,应指向 .venv 目录 which python # macOS/Linux where python # Windows → /path/to/my_project/.venv/bin/python
Usar el entorno virtual
Instalar paquetes
En el entorno activado, los paquetes instalados con pip solo afectan al entorno actual:
pip install package_name
Por ejemplo:
# 安装单个包(如Django) (.venv) pip install django==3.2.12 # 安装多个包 (.venv) pip install requests pandas # 安装速度慢?使用国内镜像 (.venv) pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple
Ver los paquetes instalados
(.venv) pip list Package Version ---------- ------- Django 3.2.12 pip 21.2.4 # 查看某个包的详情 (.venv) pip show django # 升级包 (.venv) pip install --upgrade pip
Exportar dependencias
Usar requirements.txt para registrar y reproducir el entorno del proyecto es una práctica estándar en la colaboración en equipo:
(.venv) pip freeze > requirements.txt
Ejemplo de contenido del archivo requirements.txt:
Django==3.2.12 requests==2.26.0 pandas==1.3.3
Instalar dependencias desde un archivo
(.venv) pip install -r requirements.txt
Sugerencia:Agrega .venv/ a .gitignore y solo envía requirements.txt. El entorno virtual ocupa mucho espacio y está vinculado a rutas; no debe incluirse en el control de versiones.
Salir del entorno virtual
Cuando hayas terminado el trabajo, puedes salir del entorno virtual:
deactivate
Después de salir, el indicador de la línea de comandos vuelve a la normalidad, y los comandos Python y pip usarán la versión global del sistema.
Eliminar el entorno virtual
Para eliminar un entorno virtual, solo tienes que borrar el directorio correspondiente:
# 确保已退出环境 deactivate
Eliminar el entorno virtual
Un entorno virtual es, en esencia, un directorio normal; al eliminar el directorio, se elimina por completo:
macOS / Linux
rm -rf .venv
Windows
rmdir /s /q .venv
deactivatesalir del entorno, de lo contrario el shell actual conservará variables de entorno no válidas.Ejemplo de proyecto real
Supón que estás desarrollando un proyecto Django:
Ejemplo
mkdir my_site && cd my_site
# 2. Crear el entorno virtual y activarlo
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 3. Instalar Django y registrar las dependencias
(.venv) pip install django==4.2
(.venv) pip freeze > requirements.txt
# 4. Inicializar el proyecto Django
(.venv) django-admin startproject config .
# 5. Realizar la migración de la base de datos e iniciar el servidor de desarrollo
(.venv) python manage.py migrate
(.venv) python manage.py runserver
# 6. Finalizar el desarrollo y salir del entorno
(.venv) deactivate
Uso avanzado
Especificar la versión de Python
Si tienes varias versiones de Python instaladas, puedes especificar cuál usar para crear el entorno virtual:
python3.8 -m venv .venv # 使用 Python 3.8
Crear un entorno sin pip
python -m venv --without-pip .venv
Crear un entorno virtual que herede paquetes del sistema
python -m venv --system-site-packages .venv
Preguntas frecuentes
1. ¿Por qué mi entorno virtual no tiene el script activate?
Asegúrate de que estás usando la ruta correcta:
- Windows:
Scripts\activate - Unix/Linux:
bin/activate
2. ¿Cómo saber si estoy en un entorno virtual?
Comprueba si el indicador de la línea de comandos tiene el prefijo con el nombre del entorno, o ejecuta:
which python
3. La instalación de paquetes es lenta
Usa fuentes espejo nacionales:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name
Comprueba si la ruta del intérprete de Python está en el directorio del entorno virtual.
4. ¿Se puede mover de ubicación un entorno virtual?
No se recomienda. En los scripts y archivos de configuración del entorno virtual hay rutas absolutas codificadas; si lo mueves, dejarán de funcionar. Si necesitas migrarlo, la forma más sencilla es recrear el entorno yrequirements.txtrestaurar las dependencias.
5. ¿Cuánto espacio ocupa un entorno virtual?
Un entorno vacío ocupa unos 20–50 MB, y aumenta a medida que se instalan más paquetes. Los proyectos de ciencia de datos (NumPy, Pandas, PyTorch) pueden llegar a varios GB. Es una buena práctica limpiar periódicamente los entornos virtuales que ya no se usan.
Mejores prácticas
- Un entorno independiente para cada proyecto: evita que las dependencias de distintos proyectos se afecten entre sí
- Usa un nombre uniforme
.venv: la mayoría de los IDE (VS Code, PyCharm) pueden reconocerlo automáticamente - Actualización oportuna
requirements.txt: cada vez quepip installtermines, exporta de forma sincronizada - Ignora el entorno virtual en el control de versiones: en
.gitignoreagregar en.venv/ - Limpia periódicamente los entornos en desuso: libera espacio en disco
- Fija los números de versión en producción:
requirements.txt: escribe explícitamente==la versión, para evitar actualizaciones inesperadas
# .gitignore 推荐配置 .venv/ __pycache__/ *.pyc .env *.egg-info/Otras extensiones