Preparing your experience...

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\activate en lugar de bin/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:

  1. Local: .venv/bin/activate — el entorno virtual específico del proyecto, creado con python3 -m venv .venv.
  2. 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 .venv local dentro de un proyecto que antes usaba el global, recuerda ejecutar pyon nuevamente 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.

TenolifeTENOLIFE