pyenv en python

Cuando trabajas en proyectos diferentes es común que cada uno necesite una versión distinta de Python. Instalar todas las versiones en el sistema y mantener el orden puede ser un dolor de cabeza y aquí es donde entra en juego pyenv. Nos facilita muchísimo todo este tema.

Con pyenv puedes olvidarte de los problemas de compatibilidad: lo configuras una vez y después todo va como la seda.

Y si lo combinas con pyenv-virtualenv, la experiencia mejora todavía más porque los entornos se activan automáticamente al entrar en cada carpeta, ahorrándote tiempo y dándote tranquilidad.

Pyenv optimiza el trabajo y te deja concentrarte en lo importante, sin perder tiempo peleándote con versiones de Python.

👉 Sigue leyendo y verás lo cómodo que es.


🔎 ¿Qué es pyenv?

pyenv es una herramienta que te permite instalar, cambiar y gestionar varias versiones de Python en tu máquina de manera súper sencilla.

Con pyenv puedes:

  • Instalar varias versiones de Python (2.x, 3.x, antiguas o las más recientes).
  • Elegir qué versión usar a nivel global (para todo el sistema).
  • Definir versiones específicas a nivel de proyecto (cada carpeta puede tener la suya).
  • Probar proyectos en distintas versiones sin romper nada en tu sistema.

Y si además lo combinas con pyenv-virtualenv, ganas todavía más:

  • Crear entornos virtuales basados en la versión de Python que quieras.
  • Asociar esos entornos a uno o varios proyectos.
  • Activación automática del entorno al entrar en la carpeta del proyecto.

⚙️ Instalación de pyenv

💻macOS (Homebrew)

brew update
brew install pyenv

💻Linux (Ubuntu/Debian)

Instalar dependencias

sudo apt update
sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncurses5-dev libncursesw5-dev xz-utils tk-dev \
libffi-dev liblzma-dev python3-openssl git

Instalar pyenv

curl https://pyenv.run | bash
  • Si falla la instalación de pyenv, se instala con:
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

Opcional: si quieres usar pyenv-virtualenv (lo explicamos más abajo), entonces instala el plugin con:

git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

Después agrega esto a tu ~/.bashrc~/.zshrc o equivalente: (la línea del virtualenv si lo hemos instalado)

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv virtualenv-init -)"

Recarga la terminal:

source ~/.zshrc   # o ~/.bashrc

💻Windows (pyenv-win)

En Windows no se usa el pyenv original, sino el proyecto pyenv-win 👉 https://github.com/pyenv-win/pyenv-win

Instalación rápida con PowerShell:

git clone https://github.com/pyenv-win/pyenv-win.git $HOME\.pyenv
setx PATH "%PATH%;%USERPROFILE%\.pyenv\pyenv-win\bin;%USERPROFILE%\.pyenv\pyenv-win\shims"

Cierra y abre de nuevo PowerShell o CMD y ya podrás usar pyenv.


📌 Uso básico de pyenv

Ver versiones de python que podemos instalar:

pyenv install --list
pyenv install -l

Nos mostrará las opciones disponibles:

  • Instalar una versión específica de Python:
pyenv install 3.12.2
  • Listar todas las versiones instaladas y entornos virtuales creados:
pyenv versions
  • Definir versión global (para todo el sistema):
pyenv global 3.12.2
  • Definir versión local (solo para el proyecto / carpeta actual):
pyenv local 3.10.13
  • Comprobar qué versión está activa:
pyenv version
  • Eliminar un entorno virtual:
pyenv uninstall mi-entorno


🖥️ Caso práctico

Supongamos que tienes dos proyectos:

  1. Proyecto A que necesita Python 3.12
  2. Proyecto B que aún funciona con Python 3.10

Paso 1: Instalar ambas versiones

pyenv install 3.12.2
pyenv install 3.10.13

Paso 2: Configurar cada proyecto

En la carpeta del Proyecto A:

cd ProyectoA
pyenv local 3.12.2

En la carpeta del Proyecto B:

cd ProyectoB
pyenv local 3.10.13

Paso 3: Verificar

Cada vez que entres en la carpeta de un proyecto, pyenv activará automáticamente la versión correcta de Python.

python --version
# Nos devolverá la versión que tengamos en cada lugar:
# En ProyectoA -> Python 3.12.2
# En ProyectoB -> Python 3.10.13

🔥 Entornos virtuales

Cuando trabajamos en proyectos Python, lo recomendable siempre es usar entornos virtuales para aislar dependencias y evitar conflictos.

La manera tradicional de hacerlo sería, primero estableceríamos la versión en el proyecto con pyenv local 3.10.13 y luego crearíamos el entorno con python -m venv nombreEntorno además de activarlo con: source menv/bin/activate Esto funciona perfectamente (pyenv lo acepta), pero tiene la pega de que tienes que activar el entorno cada vez.


La solución elegante: pyenv-virtualenv

Con este plugin puedes crear entornos virtuales ligados a versiones de Python directamente desde pyenv, y lo mejor:

👉 el entorno se activa automáticamente al entrar en la carpeta del proyecto.

Instalación

  • macOS / Linux (Homebrew):
brew install pyenv-virtualenv
  • Manual:
git clone https://github.com/pyenv/pyenv-virtualenv.git \ $(pyenv root)/plugins/pyenv-virtualenv


Después añade esto a tu ~/.bashrc o ~/.zshrc (si no lo agregaste en la instalación de pyenv):

eval "$(pyenv virtualenv-init -)"

  • Windows (pyenv-win):
    Ya incluye soporte de virtualenv, no necesitas instalar nada más.

Uso básico pyenv virtualenv

  • Crear un entorno virtual:
    pyenv virtualenv 3.12.2 mi-entorno

    Esto crea un entorno llamado mi-entorno basado en Python 3.12.2.

    • Asignarlo a un proyecto:
    cd ProyectoX
    pyenv local mi-entorno

    Así, cada vez que entres a la carpeta ProyectoX, pyenv activará automáticamente ese entorno virtual.

    Y usando comandos anteriores podremos:

    • Listar entornos y versiones:
      pyenv versions
      • Eliminar un entorno virtual:
        pyenv uninstall mi-entorno


        ✅ Conclusión

        Si trabajas con varios proyectos en Python, pyenv es casi imprescindible. Y si además usas pyenv-virtualenv, ganarás comodidad y tiempo. Configúralo una vez y olvídate.

        Y hasta aquí el post de pyenv, ¡espero que te sirva de ayuda! 

          Salu2!

          Deja una respuesta

          Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *