Carga Rápida de venv Python — Local Primero, Luego Global
— 2 min de lectura
Cambiar entre proyectos de Python debería ser instantáneo. El siguiente patrón te da esa velocidad con un solo comando: comprueba si existe un .venv local en el directorio actual y haz fallback a un ~/.venv global si no hay ninguno local.
Nota: Esta guía cubre macOS y Linux (bash / zsh). Windows usa
Scripts\activateen lugar debin/activate, y las rutas usan\en vez de/. Adapta la función en consecuencia o ejecútala en Git Bash / WSL donde bash está disponible.
La función
Añade esto a tu ~/.bashrc (o ~/.zshrc):
pyon() {
if [ -f "./.venv/bin/activate" ]; then
source "./.venv/bin/activate"
elif [ -f "$HOME/.venv/bin/activate" ]; then
source "$HOME/.venv/bin/activate"
else
echo "pyon: no venv found in ./.venv or ~/.venv" >&2
return 1
fi
}
Luego recarga tu configuración de shell con source ~/.bashrc y listo.
Cómo funciona
Ejecuta pyon desde cualquier directorio. La función comprueba dos ubicaciones en orden:
- Local:
.venv/bin/activate— el entorno virtual específico del proyecto, creado conpython3 -m venv .venv. - Global:
~/.venv/bin/activate— tu entorno universal personal para proyectos que no incluyen su propio venv.
Si ninguno existe, imprime un error y sale con código 1 para que sepas inmediatamente que algo está mal.
Crear el venv global
Para proyectos sin un entorno virtual local, configura uno global único una vez:
python3 -m venv ~/.venv
Luego ejecuta pyon en cualquier directorio de proyecto — activará ese entorno compartido automáticamente.
Ojo: Si creas un nuevo
.venvlocal dentro de un proyecto que antes usaba el global, recuerda ejecutarpyonnuevamente desde dentro del directorio del proyecto. La función se resuelve al momento de la llamada, no al inicio del shell.
Por qué esto supera al sourcing manual
El enfoque tradicional consiste en recordar y escribir la ruta completa cada vez:
source my-project/.venv/bin/activate
Esto falla en cuanto cambias de directorio o trabajas con múltiples proyectos. Con pyon, escribes una sola palabra — sin importar dónde estés — y encuentra el entorno correcto para ti. También funciona en subdirectorios, que es cómo la mayoría de los desarrolladores navegan por sus carpetas de proyecto de todos modos.
Desactivar
Como con cualquier entorno virtual, sale con:
deactivate
Esto restaura tu shell al Python del sistema. La función pyon en sí no interfiere con deactivate.