Tienes un cupón activo hasta el . Ver tu oferta

Varias versiones de Python en una máquina Linux

Cómo instalar varias versiones de Python en Linux y otros sistemas tipo Unix y cambiar entre ellas con uv, pyenv o los paquetes del sistema. Además, cómo usar entornos virtuales y pipx para que cada proyecto y cada herramienta funcionen con la versión correcta.

Por qué necesitas más de una versión de Python

Python se actualiza cada año. Cada versión recibe soporte durante un tiempo limitado y después llega a su fin de vida, así que lo normal es que en una misma computadora convivan proyectos pensados para versiones distintas. Un proyecto antiguo puede seguir en una versión ya sin soporte, otro proyecto nuevo usa la más reciente, y quien mantiene una biblioteca necesita probarla en varias versiones a la vez. Por eso quien programa en Python debe saber tener varios intérpretes en una sola máquina, incluso si en producción usa Docker.

Hubo una época en que el problema principal era la convivencia de Python 2 y Python 3. Python 2 llegó a su fin de vida el 1 de enero de 2020 y su última versión fue la 2.7.18. Hoy solo lo verás en código heredado, y en ese caso lo más sano es aislarlo en un contenedor o en un entorno propio y planear la migración a Python 3.

Qué versiones están vigentes

Según la guía oficial para desarrolladores de Python (consultada el 27 de octubre de 2026), el estado de las versiones recientes es este.

Versión Estado Fin de soporte
3.15 correcciones octubre de 2031 (previsto)
3.14 correcciones octubre de 2030 (previsto)
3.13 solo seguridad octubre de 2029 (previsto)
3.12 solo seguridad octubre de 2028 (previsto)
3.11 solo seguridad octubre de 2027 (previsto)
3.10 fin de vida 1 de octubre de 2026
3.9 fin de vida 31 de octubre de 2025

Las fechas futuras pueden ajustarse, así que antes de elegir versión revisa la tabla oficial en devguide.python.org/versions. Para un proyecto nuevo, una versión estable reciente suele ser una buena elección. Para uno existente, usa la que pidan sus dependencias.

uv, la forma más directa de instalar versiones de Python

uv es una herramienta de Astral que, entre otras cosas, descarga e instala intérpretes de Python sin compilarlos. Usa distribuciones ya construidas del proyecto python-build-standalone, por eso no hace falta compilar el intérprete en tu máquina.

Para instalar uv en Linux o macOS existe un instalador oficial.

$ curl -LsSf https://astral.sh/uv/install.sh | sh

Después ya puedes pedir versiones concretas.

$ uv python install 3.12
$ uv python install 3.11 3.13
$ uv python list

El último comando muestra las versiones disponibles y las instaladas. Para fijar la versión de un proyecto, uv crea el archivo .python-version en la carpeta actual.

$ uv python pin 3.12

Con esa versión puedes crear un entorno virtual. También puedes pedir una versión directamente, y uv la descarga si hace falta.

$ uv venv --python 3.11

Por defecto uv instala solo ejecutables con versión, como python3.12, y no reemplaza el python3 del sistema. Cuando un comando necesita un intérprete que no existe, uv lo descarga automáticamente, y esta descarga automática se puede desactivar en la configuración. Para actualizar un intérprete a su última corrección usa uv python upgrade 3.12.

Paquetes del sistema y el PPA deadsnakes

La forma más tradicional es el gestor de paquetes de tu distribución. En Debian, Ubuntu y derivados se usa apt, y si tienes suerte la versión que necesitas ya está en los repositorios. Pero cada distribución trae unas versiones concretas, y las que no trae no se pueden instalar así.

En Ubuntu existe además el PPA de deadsnakes, con versiones más recientes de Python empaquetadas para Ubuntu.

$ sudo add-apt-repository ppa:deadsnakes/ppa
$ sudo apt update
$ sudo apt install python3.13 python3.13-venv

Ten en cuenta que los propios mantenedores describen ese PPA como una fuente no oficial, sin garantía de actualizaciones a tiempo, y avisan de que usarlo en entornos de producción o críticos para la seguridad es bajo tu responsabilidad. Los paquetes no incluyen todo, y piezas como -venv o -dev se instalan por separado. Además, los módulos compilados que Ubuntu trae para su Python normalmente no funcionan con esos intérpretes.

En general, agrega solo PPA de autores confiables, porque con cada uno aceptas instalar software de una fuente ajena a tu distribución.

pyenv

pyenv es un gestor de versiones escrito en scripts de shell. Permite elegir una versión global para tu usuario (pyenv global), una por carpeta (pyenv local, que crea un .python-version) y otra solo para la sesión actual (pyenv shell). pyenv install -l lista las versiones disponibles.

Su instalación es sencilla y funciona en muchas plataformas, pero la mayoría de las versiones se compilan desde el código fuente al instalarlas. Por eso necesitas un compilador de C y las dependencias de compilación de CPython, que el proyecto describe en su documentación. En Windows pyenv no funciona sin WSL, y el propio proyecto recomienda el fork pyenv-win.

pyenv sigue siendo útil si ya lo usas o si tu equipo lo tiene como estándar. Para una visión general de este tipo de herramientas lee ¿Qué es un "Gestor de versiones"?.

Compilar desde el código fuente

CPython es de código abierto, así que puedes compilar la versión que quieras. Es un proceso bien documentado, pero tienes que instalar antes las dependencias de compilación. Es la única opción si quieres modificar el código del intérprete o compilarlo para una plataforma poco común. La documentación oficial advierte que make install puede sobrescribir el binario python3 y recomienda make altinstall, que solo instala el ejecutable con versión.

$ ./configure
$ make
$ sudo make altinstall

Los comandos python y python3

Históricamente el intérprete se llamaba python, y cuando apareció Python 3 se definieron reglas de nombres en el PEP 394, que sigue activo. Hoy lo que importa de ese documento se resume en pocas ideas.

  • Cada distribución decide si ofrece el comando python, y algunas no lo incluyen. El comando python3 es el que debes esperar en un sistema tipo Unix.
  • Dentro de un entorno virtual activo, python siempre existe y apunta al intérprete del entorno.
  • En un script que se ejecuta fuera de un entorno virtual, es mejor #!/usr/bin/env python3 en el shebang que python a secas.
  • Para programas instalables, lo recomendable es no escribir el shebang a mano y dejar que las herramientas de empaquetado generen los puntos de entrada.

Entornos virtuales con venv

Un entorno virtual es una carpeta con su propio intérprete y sus propios paquetes. Se crea sobre el Python con el que lo generas y queda aislado de los paquetes del sistema.

$ python3.12 -m venv .venv
$ source .venv/bin/activate
(.venv) $ python --version

Si creas el entorno con un ejecutable con versión, como python3.12, dentro del entorno python y python3 apuntan a esa misma versión. En Debian y Ubuntu el módulo venv viene en un paquete aparte (python3-venv), así que si el comando falla, instálalo con apt.

El error externally-managed-environment

En distribuciones recientes puede que al ejecutar pip install fuera de un entorno virtual veas un error que menciona externally-managed-environment. Es el mecanismo del PEP 668. La distribución marca su Python como gestionado por el sistema de paquetes, para que pip no mezcle sus paquetes con los del sistema y no rompa herramientas que dependen de ellos.

Lo recomendable es crear un entorno virtual y usar el pip de ese entorno, o instalar la herramienta con pipx. Existe una opción para forzar la instalación (--break-system-packages), pero el PEP aclara que es arriesgada y no debe usarse como solución habitual.

Herramientas de línea de comandos con pipx o uv

Muchas herramientas de Python, como linters o gestores de proyectos, son programas que quieres tener disponibles en cualquier carpeta, pero sin mezclar sus dependencias con las de tus proyectos. Para eso sirve pipx, que crea un entorno virtual por cada aplicación y deja su comando disponible en tu terminal. uv ofrece lo mismo con uv tool install.

$ pipx install poetry
$ pipx ensurepath
$ uv tool install ruff
$ uvx ruff --version

pipx ensurepath y uv tool update-shell añaden la carpeta de los ejecutables a tu PATH. Reinicia la terminal después. uvx (alias de uv tool run) ejecuta una herramienta en un entorno temporal sin instalarla. Con --python puedes elegir con qué intérprete se instala o se ejecuta una herramienta, por ejemplo uvx --python 3.12 ruff.

La documentación de pipx explica cómo instalarlo con pip. Si tu sistema aplica el PEP 668, es posible que pip se niegue a hacerlo fuera de un entorno virtual. En ese caso mira si tu distribución ofrece pipx en sus repositorios, o usa uv tool install.

Poetry y la versión de Python de cada proyecto

Esta guía mostraba antes cómo instalar a mano una versión antigua de Poetry en su propio entorno virtual, porque entonces fallaba en sistemas sin un comando python. Eso ya no es necesario. La documentación oficial recomienda instalar Poetry con pipx (pipx install poetry) o con su instalador oficial, y la versión estable documentada hoy es la 2.5, que requiere Python 3.10 o superior.

Lo que sí conviene saber es cómo elegir el Python de cada proyecto. Poetry crea el entorno del proyecto con el Python con el que se instaló y, si esa versión no encaja con el rango que indicas en pyproject.toml, busca otra compatible. Si necesitas una versión concreta, puedes indicársela.

$ poetry env use 3.12
$ poetry env info

poetry env use acepta una versión (3.12), el nombre de un ejecutable en el PATH (python3.12) o una ruta completa. Si tienes pyenv, Poetry usa el python que tu shell tenga activo al crear el entorno. Y si prefieres que el entorno quede dentro del proyecto, en la carpeta .venv, activa esta opción.

$ poetry config virtualenvs.in-project true

Ten en cuenta que si el proyecto ya tiene un entorno en la caché de Poetry, esta opción no lo mueve y tendrás que eliminarlo primero.

Qué camino elegir

  • Si empiezas y quieres lo más simple, instala uv y pide las versiones con uv python install.
  • Si tu equipo ya usa pyenv, no hace falta cambiar, solo recuerda que compila cada versión.
  • Si quieres lo que ofrece tu distribución, usa apt o el gestor de tu sistema, y deadsnakes solo si entiendes sus riesgos.
  • Compilar desde el código fuente es el último recurso.
  • Sea cual sea el método, trabaja siempre dentro de un entorno virtual y instala las herramientas de línea de comandos con pipx o uv tool.

Si quieres practicar todo esto paso a paso, el curso Python Configuración del entorno recorre la instalación, las dependencias y los entornos virtuales. Cuando una instalación falle, copia el mensaje de error completo en tu búsqueda o en un asistente de IA, pero compara siempre los comandos que te proponga con la documentación oficial antes de ejecutarlos con sudo.

Para seguir aprendiendo

Leer otros artículos de Guías

Lea otros artículos relevantes del mundo de la tecnología y el espíritu empresarial.

Herramientas y entorno

Cómo configurar VS Code para desarrollar en PHP

Visual Studio Code es un popular editor de código gratuito. Puede competir fácilmente con PhpStorm, ya que es gratuito y de código abierto.

Actualizado el

Herramientas y entorno

¿Qué es un Makefile y cómo empezar a usarlo?

Esta guía te mostrará cómo el uso de la herramienta Makefile puede simplificar el proceso de configuración de un proyecto a unas pocas y comprensibles comandos.

Actualizado el

Todas las guías