Si moviste un proyecto de Python en tu Mac y su .venv dejó de funcionar, vuelve a crear el entorno en la nueva ubicación del proyecto. Los entornos virtuales de Python contienen rutas vinculadas al lugar donde se crearon, por lo que cambiar el nombre de la carpeta o el directorio superior puede romper la activación y los comandos instalados. Conserva los archivos de tu proyecto, elimina solo el .venv antiguo, crea un entorno nuevo y vuelve a instalar las dependencias a partir de los archivos de dependencias del proyecto. La documentación de venv de Python describe los entornos como generalmente no portables y recomienda volver a crearlos después de moverlos.
Por qué se rompe un entorno que ha sido movido
Un entorno virtual almacena su configuración de Python y genera scripts instalados con rutas hacia el intérprete del entorno. Al mover la carpeta del proyecto, esas rutas pueden seguir apuntando a la ubicación antigua. Eso puede hacer que source .venv/bin/activate apunte a un archivo inexistente, o que un comando instalado en el entorno invoque un intérprete que ya no existe. Volver a ejecutar la activación o cambiar el nombre del entorno no repara de manera confiable esas rutas integradas; la solución documentada por Python consiste en volver a crear el entorno en su nueva ubicación. Python: venv y cómo funcionan los entornos
1. Abre el proyecto movido en Terminal
En Terminal, navega hasta el directorio actual del proyecto. En zsh o bash, escribe la ruta entre comillas si contiene espacios o caracteres especiales del shell; reemplaza la ruta de ejemplo por la ubicación real de la carpeta:
cd "$HOME/Projects/My Python Project"
pwd
ls -la
Verifica que estás en la raíz del proyecto y que puedes ver sus archivos de código fuente y la información de dependencias. Los registros de dependencias habituales incluyen requirements.txt, pyproject.toml y un archivo de bloqueo (lock file) específico del proyecto. No elimines todo el proyecto ni sus archivos de dependencias. Si no tienes certeza de cuál es el directorio del entorno antiguo, revisa su contenido antes de borrar nada.
2. Elimina únicamente el entorno antiguo
Si el directorio del entorno se llama .venv y se encuentra dentro de la raíz del proyecto, elimina únicamente ese directorio. Primero desactívalo si el símbolo del sistema (prompt) muestra que está activo; deactivate es el comando documentado del shell. Luego ejecuta:
deactivate
rm -rf .venv
Si no hay ningún entorno activo, deactivate puede indicar que el comando no está disponible; continúa sin él. Antes de ejecutar rm -rf .venv, comprueba que pwd muestre la raíz del proyecto y que .venv sea el entorno que planeas reemplazar. Si tu entorno usa otro nombre o se ubica en otra parte, sustitúyelo por su ruta exacta y evita borrar el código fuente o los datos del proyecto. Python recomienda eliminar el entorno antiguo después de crearlo nuevamente en su nueva ubicación; este artículo lo elimina primero para que el destino deseado no dé lugar a ambigüedades. Python: venv y cómo funcionan los entornos
3. Vuelve a crear el entorno con la versión adecuada de Python
Si el proyecto especifica una versión de Python, usa un intérprete coincidente que esté disponible en tu Mac. Por ejemplo, si python3.12 está instalado y el proyecto requiere esa versión:
python3.12 -m venv .venv
source .venv/bin/activate
python --version
python -m pip --version
Si el proyecto no especifica una versión y tu python3 habitual es adecuado, usa en su lugar python3 -m venv .venv. En macOS, el comando de activación estándar para zsh y bash es source .venv/bin/activate. Comprueba la salida de python --version antes de restaurar los paquetes; python debe hacer referencia al intérprete del entorno una vez activado. Python: activación de venv y rutas del intérprete
Los usuarios de Homebrew deben mantener los paquetes del proyecto dentro del entorno virtual. Homebrew documenta su Python actual como administrado externamente y recomienda un entorno de proyecto para las dependencias. Si falta python3 o se selecciona un intérprete no adecuado, consulta el instalador o gestor de versiones que proporcionó el Python del proyecto; no intentes reparar el entorno instalando paquetes en directorios de Python gestionados por macOS. Homebrew: Entornos de ejecución de lenguajes y paquetes
4. Reinstala las dependencias del proyecto
Utiliza las instrucciones de dependencias existentes del proyecto o el archivo de bloqueo cuando estén disponibles. Para un proyecto que gestiona dependencias en requirements.txt, vuelve a instalarlas con el Python y el pip del entorno:
python -m pip install -r requirements.txt
Usar python -m pip vincula pip al intérprete seleccionado por python. Si el proyecto utiliza otro gestor de dependencias o un archivo de bloqueo, sigue el procedimiento de instalación documentado de esa herramienta en lugar de inventar un archivo de requirements o ignorar el archivo de bloqueo. Un venv nuevo incluye pip por defecto, y la documentación de Python indica específicamente un archivo de requirements como método para volver a crear los paquetes instalados. Python: venv, Python: Instalación de módulos de Python
Si la instalación falla porque un paquete necesita un compilador, una biblioteca nativa o una versión de Python no compatible con el proyecto, es posible que el entorno virtual se haya vuelto a crear correctamente pero esa dependencia aún requiera su prerrequisito documentado. Lee las instrucciones de instalación del paquete o del proyecto y soluciona el error específico; no intentes resolverlo usando sudo pip ni cambiando los permisos de propiedad de los archivos del sistema de Python. Homebrew desaconseja estas soluciones alternativas para directorios gestionados. Homebrew: Entornos de ejecución de lenguajes y paquetes
5. Comprueba que el entorno reparado esté activo
Confirma que el intérprete seleccionado se encuentre dentro del nuevo .venv, y luego ejecuta el comando habitual del proyecto o las instrucciones de prueba:
python -c 'import sys; print(sys.executable)'
La ruta mostrada debe apuntar al directorio .venv del proyecto. Si apunta a otro lugar, activa de nuevo el entorno desde la raíz del proyecto y revisa la configuración de inicio del shell o los alias de comandos que pudieran alterar la selección de Python. Esta comprobación confirma la selección del intérprete; no demuestra que todas las dependencias del proyecto o funciones de la aplicación estén operativas.
Es mejor considerar desechable un entorno virtual que ha sido movido: conserva el código fuente y los registros de dependencias, y luego reconstruye .venv en el lugar donde resida actualmente el proyecto. Repetir estos pasos tras un nuevo cambio de ubicación es la vía de recuperación documentada y fiable.
Fuentes
venv — Creación de entornos virtuales — Python Software Foundation
Instalación de módulos de Python — Python Software Foundation
Language Runtimes and Packages — Homebrew