Capítulo 1. Instalar Python

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Si has cogido este libro, es probable que ya tengas Python instalado en tu máquina. Los sistemas operativos más comunes incluyen un comando python3. Éste puede ser el intérprete utilizado por el propio sistema; en Windows y macOS, es un marcador de posición que instala Python por ti cuando lo invocas por primera vez.

¿Por qué dedicar un capítulo entero al tema si es tan fácil instalar Python en una máquina nueva? La respuesta es que instalar Python para un desarrollo a largo plazo puede ser un asunto complejo, y hay varias razones para ello:

  • Generalmente necesitas varias versiones de Python instaladas una al lado de la otra. (Si te preguntas por qué, hablaremos de ello en breve).

  • Hay algunas formas diferentes de instalar Python en las plataformas habituales, cada una con sus ventajas, inconvenientes y, a veces, trampas.

  • Python es un objetivo en movimiento: tienes que mantener las instalaciones existentes actualizadas con la última versión de mantenimiento, añadir instalaciones cuando se publique una nueva versión de características y eliminar las versiones que ya no sean compatibles. Puede que incluso necesites probar una versión preliminar de la próxima Python.

  • Puede que quieras que tu código funcione en varias plataformas. Aunque Python facilita la escritura de programas portables, configurar un entorno de desarrollo requiere cierta familiaridad con la idiosincrasia de cada plataforma.

  • Puede que quieras ejecutar tu código con una implementación alternativa de Python en .1

En este primer capítulo, te mostraré cómo instalar varias versiones de Python en algunos de los principales sistemas operativos de forma sostenible, y cómo mantener tu pequeña granja de serpientes en buen estado.

Consejo

Aunque desarrolles para una sola plataforma, te animo a que aprendas a trabajar con Python en otros sistemas operativos. Es divertido, y familiarizarte con otras plataformas te permitirá ofrecer una mejor experiencia a los colaboradores y usuarios de tu software.

Compatibilidad con varias versiones de Python

Los programas Python a menudo se dirigen a varias versiones del lenguaje y de la biblioteca estándar a la vez. Esto puede sorprenderte. ¿Por qué ejecutar tu código con algo que no sea la última versión de Python? Al fin y al cabo, esto permite que tus programas se beneficien inmediatamente de las nuevas características del lenguaje y de las mejoras de la biblioteca.

Resulta que los entornos de ejecución suelen venir con diversas versiones antiguas de Python.2 Incluso si tienes un control estricto de tus entornos de implementación, puede que quieras adquirir el hábito de realizar pruebas con varias versiones. Será mejor que el día en que el fiable Python de tu entorno de producción aparezca en un aviso de seguridad no sea el día en que empieces a portar tu código a versiones más recientes.

Por estas razones, es habitual dar soporte tanto a como a las versiones actuales y anteriores de Python hasta su fecha oficial de fin de vida útil y configurar instalaciones para ellas una al lado de la otra en una máquina de desarrollador. Con la aparición de nuevas versiones cada año y un soporte que se extiende durante cinco años, esto te da una matriz de pruebas de cinco versiones soportadas activamente (verFigura 1-1). Si eso te parece mucho trabajo, no te preocupes: el ecosistema Python incluye herramientas que lo hacen muy fácil.

Localización de intérpretes de Python

¿Cómo seleccionar el intérprete correcto de Python si tienes varios en tu sistema? Veamos un ejemplo concreto. Cuando escribes python3 en la línea de comandos, el intérprete de comandos busca de izquierda a derecha en los directorios de la variable de entorno PATH e invoca el primer archivo ejecutable llamado python3. Las instalaciones de Python en macOS y Linux también proporcionan comandos llamados python3.12,python3.11, etc., para que puedas desambiguar entre las distintas versiones de las funciones.

Nota

En Windows, el descubrimiento de intérpretes basado en PATH es menos relevante porque las instalaciones de Python pueden localizarse a través del Registro de Windows (consulta"El lanzador de Python para Windows"). Los instaladores de Windows sólo incluyen un ejecutable python.exe sin versionar.

La Figura 1-2 muestra una máquina macOS con varias instalaciones de Python. Empezando por abajo, el primer intérprete de se encuentra en/usr/bin/python3 y forma parte de las Herramientas de Línea de Comandos de Apple (Python 3.9 en el momento de escribir esto). A continuación, en /opt/homebrew/bin, se encuentran varios intérpretes de la distribución Homebrew; el comando python3 aquí es su intérprete principal (Python 3.11). A los intérpretes de Homebrew les sigue una versión previa depython.org (Python 3.13). La entrada superior contiene la versión actual (Python 3.12 en el momento de escribir esto), también de Homebrew.

An example of a customized PATH on a macOS machine, with Python installations from Homebrew, python.org, and Apple's Command Line Tools.
Figura 1-2. Un sistema de desarrollo con varias instalaciones de Python. La ruta de búsqueda se muestra como una pila de directorios; los comandos de la parte superior hacen sombra a los de la parte inferior.

El orden de los directorios en la ruta de búsqueda es importante, porque las entradas anteriores tienen prioridad sobre las posteriores, o "sombra". En la Figura 1-2,python3 se refiere a la versión estable actual (Python 3.12). Si omitieras la entrada superior, python3 se referiría a la versión preliminar (Python 3.13). Sin las dos entradas superiores, se referiría al intérprete por defecto de Homebrew, que aún está en la versión estable anterior (Python 3.11).

Localizar los intérpretes de Python en PATH es una fuente común de errores . Algunas instalaciones sobrescriben el comando python3 en directorios compartidos como/usr/local/bin. Otras colocan python3 en un directorio distinto y alteran elPATH para darle precedencia, haciendo sombra a versiones instaladas anteriormente. Para resolver estos problemas, este libro utiliza elLanzador de Python para Unix(ver"El Lanzador de Python para Unix"). No obstante, comprender la mecánica de la variable PATHte ayudará a evitar problemas con el descubrimiento de Python en Windows, macOS y Linux.

Un valor predeterminado común para la variable PATH es /usr/local/bin:/usr/bin:/bin en sistemas tipo Unix, normalmente combinado con algunas ubicaciones dependientes del sistema operativo. Puedes modificar la variable utilizando el built-in export de muchos shells. He aquí cómo añadirías una instalación de Python en /usr/local/opt/python utilizando el shell Bash:

export PATH="/usr/local/opt/python/bin:$PATH"

Estás añadiendo el subdirectorio bin en lugar de la raíz de la instalación porque es ahí donde se encuentra normalmente el intérprete en estos sistemas. Veremos más detenidamente la disposición de las instalaciones de Python en el Capítulo 2. Además, estás añadiendo el directorio al principio de la variable PATH. En breve te explicaré por qué esto suele ser lo que quieres.

La línea anterior también funciona con Zsh, que es el shell por defecto en macOS. Dicho esto, hay una forma más idiomática de manipular la ruta de búsqueda en Zsh:

typeset -U path 1
path=(/usr/local/opt/python/bin $path) 2
1

Esto indica al intérprete de comandos que elimine las entradas duplicadas de la ruta de búsqueda.

2

El intérprete de comandos mantiene la matriz path sincronizada con la variable PATH.

La cáscara de pez ofrece una función para añadir una entrada a la ruta de búsqueda de forma única y persistente:

fish_add_path /usr/local/opt/python/bin

Sería tedioso configurar manualmente la ruta de búsqueda en al inicio de cada sesión del shell. En su lugar, puedes colocar los comandos anteriores en tu perfil de shell, unarchivo en tu directorio personal que el shell lee al iniciarse.La Tabla 1-1 muestra los más comunes.

Tabla 1-1. Los archivos de inicio de algunos shells comunes
Concha Archivo de inicio

Bash

.bash_profile (Debian y Ubuntu: .profile)

Zsh

.zshrc

pescado

.config/pescado/pescado.config

¿Por qué es importante añadir nuevos directorios al principio de la variable PATH? En una instalación prístina de macOS o Linux, el comando python3 suele apuntar a una versión antigua de Python . Como desarrollador de Python, tu intérprete por defecto debería ser la última versión estable de Python. Anteponer PATH te permite controlar qué instalación de Python elige tu shell ante un comando ambiguo como python3. Puedes garantizar que python3 apunta a la última versión estable de Python y que cada python3.x apunta a la última corrección de errores o versión de seguridad de la línea 3.x.

Consejo

A menos que tu sistema ya disponga de una selección bien seleccionada y actualizada de intérpretes, añade las instalaciones de Python a la variable de entorno PATH, con la última versión estable al principio.

Instalar Python en Windows

El equipo del núcleo de Python proporciona instaladores binarios oficiales de en lasección Descargas para Windows del sitio web de Python. Localiza la última versión de cada versión de Python que desees utilizar y descarga el instalador de 64 bits para Windows de cada una de ellas.

Nota

Dependiendo de tu dominio y del entorno de destino, puede que prefieras utilizar el Subsistema de Windows para Linux (WSL) para el desarrollo de Python. En este caso, consulta en su lugar la sección "Instalar Python en Linux".

En general, no debería haber mucha necesidad de personalizar la instalación, con una excepción: cuando instales la última versión estable (y sólo entonces), activa la opción de añadir Python a tu variable de entorno PATH en la primera página del cuadro de diálogo del instalador. Esto garantiza que tu comando por defecto python utilice una versión de Python conocida y actualizada.

Los instaladores de python. org son una forma eficaz de configurar entornos Python multiversión en Windows, por estas razones:

  • Registran cada instalación de Python en el Registro de Windows, facilitando que las herramientas de desarrollo descubran los intérpretes en el sistema (consulta"El lanzador de Python para Windows").

  • No tienen algunas de las desventajas de las versiones redistribuidas de Python, como ir por detrás de la versión oficial o estar sujetas amodificaciones posteriores.

  • No requieren que construyas el intérprete de Python, lo que -aparte de llevarte un tiempo precioso- implica configurar las dependencias de construcción de Python en tu sistema.

Los instaladores binarios sólo se proporcionan hasta la última versión de corrección de errores de cada versión de Python, que se produce unos 18 meses después del lanzamiento inicial. Por otra parte, las actualizaciones de seguridad de versiones anteriores sólo se proporcionan como distribuciones de código fuente. Si no quieres compilar Python desde el código fuente,4 puedes utilizar una de las excelentes compilaciones independientes de Python, una colección de distribuciones de Python autocontenidas y muy portátiles.

Mantener actualizadas las instalaciones de Python recae sobre tus hombros cuando utilizas los instaladores binarios de python.org. Las nuevas versiones se anuncian en muchos lugares, como el blog de Python y elDiscurso de Python. Cuando instalas una versión de corrección de errores para una versión de Python que ya está presente en el sistema, sustituirá a la instalación existente. Esto preserva los proyectos y las herramientas de desarrollo en la versión actualizada de Python y debería ser una experiencia sin problemas.

Cuando instales una nueva versión de Python, ten en cuenta los siguientes pasos adicionales:

  • Activa la opción de añadir el nuevo Python a la variable de entorno PATH.

  • Elimina la versión anterior de Python de PATH. Puedes editar las variables de entorno de tu cuenta utilizando la herramienta Configuración del Sistema que forma parte de Windows.

  • También puedes reinstalar algunas de tus herramientas de desarrollo, para asegurarte de que funcionan con la última versión de Python.

Con el tiempo, una versión de Python llegará al final de su vida útil, y puede que desees desinstalarla para liberar recursos. Puedes eliminar una instalación existente utilizando la herramienta Aplicaciones Instaladas. Elige la acción Desinstalar para su entrada en la lista de software instalado. Ten en cuenta que eliminar una versión de Python romperá los proyectos y herramientas que aún la utilicen, por lo que deberías actualizarlos antes a una versión más reciente de Python.

El Lanzador de Python para Windows

El desarrollo de Python en Windows es especial en el sentido de que las herramientas pueden localizar instalaciones de Python a través del Registro de Windows. El Lanzador de Python para Windows aprovecha esto para proporcionar un único punto de entrada a los intérpretes del sistema. Es una utilidad incluida en todas las versiones de python.org y asociada a las extensiones de archivo de Python, que te permite lanzar scripts desde el Explorador de archivos de Windows.

Ejecutar aplicaciones con un doble clic es práctico, pero el Lanzador de Python es más potente cuando lo invocas desde una línea de comandos. Abre una ventana de PowerShell y ejecuta el comando py para iniciar una sesión interactiva:

> py
Python 3.12.2 (tags/v3.12.2:6abddd9, Feb  6 2024, 21:26:36) [...] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

Por defecto, el Lanzador de Python selecciona la versión más reciente de Python instalada en el sistema. Cabe señalar que ésta puede no ser la misma que la versióninstalada más recientemente en el sistema. Esto es bueno: no querrás que tu Python por defecto cambie cuando instales una corrección de errores de una versión anterior.

Si quieres lanzar una versión específica de el intérprete, puedes pasar la versión de la función como una opción de la línea de comandos:

> py -3.11
Python 3.11.8 (tags/v3.11.8:db85d51, Feb  6 2024, 22:03:32) [...] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

Los argumentos restantes a py se reenvían al intérprete seleccionado. Veamos cómo mostrar las versiones de dos intérpretes en el sistema:

> py -V
Python 3.12.2

> py -3.11 -V
Python 3.11.8

Utilizando el mismo mecanismo, puedes ejecutar un script en un intérprete concreto:

> py -3.11 path\to\script.py
Nota

Por razones históricas, py también inspecciona la primera línea del script para ver si allí se especifica una versión. La forma canónica es #!/usr/bin/env python3, que corresponde a py -3 y funciona en las principales plataformas.

Como has visto, el Lanzador de Python utiliza por defecto la versión más reciente del sistema. Hay una excepción en a esta regla: si hay un entorno virtual activo, py utiliza por defecto el intérprete del entorno virtual.5

Cuando instalas una versión preliminar de Python, el Lanzador de Python la utilizará como intérprete por defecto en lugar de la versión actual -después de todo, es la versión más reciente del sistema. En este caso, debes anular el valor por defecto estableciendo las variables de entorno PY_PYTHON y PY_PYTHON3 a la versión actual:

> setx PY_PYTHON 3.12
> setx PY_PYTHON3 3.12

Reinicia la consola para que la configuración surta efecto. No olvides eliminar estas variables cuando pases de la versión preliminar a la versión final.

Para concluir nuestro breve recorrido por el Lanzador de Python, utiliza el comando py --listpara enumerar los intérpretes de tu sistema:

> py --list
 -V:3.13          Python 3.13 (64-bit)
 -V:3.12 *        Python 3.12 (64-bit)
 -V:3.11          Python 3.11 (64-bit)
 -V:3.10          Python 3.10 (64-bit)
 -V:3.9           Python 3.9 (64-bit)
 -V:3.8           Python 3.8 (64-bit)

En este listado, el asterisco marca la versión por defecto de Python.

Consejo

Aunque siempre utilices tú mismo el Lanzador de Python, debes mantener actualizado tuPATH. Algunas herramientas de terceros ejecutan directamente el comando python.exe; no querrás que utilicen una versión de Python obsoleta de o que recurran al shim de Microsoft Store.

Instalar Python en macOS

Puedes instalar Python en macOS de varias formas . En esta sección, echaré un vistazo al gestor de paquetes Homebrew y a los instaladores oficiales de python.org. Ambos proporcionan distribuciones binarias multiversión de Python. Algunos métodos de instalación habituales en Linux -como pyenv- también funcionan en macOS. El gestor de paquetes Conda incluso es compatible con Windows, macOS y Linux. Hablaré de ellos en secciones posteriores.

Python casero

Homebrew es un gestor de paquetes de terceros para macOS y Linux. Proporciona unadistribución superpuesta, una colección de software de código abierto que instalas sobre el sistema operativo existente. La instalación del gestor de paquetes es sencilla; consulta las instrucciones en el sitio web oficial.

Homebrew distribuye paquetes para todas las versiones de Python mantenidas en . Utiliza la interfaz de línea de comandos brew para gestionarlos:

brew install python@3.x

Instala una nueva versión de Python.

brew upgrade python@3.x

Actualiza una versión de Python a una versión de mantenimiento.

brew uninstall python@3.x

Desinstalar una versión de Python.

Nota

Siempre que veas nombres como python3.x opython@3.x en esta sección, sustituye3.x por la versión real de la función. Por ejemplo, utiliza python3.12 y python@3.12 para Python 3.12.

Puede que ya tengas instaladas algunas versiones de Python para otros paquetes Homebrew que dependen de ellas. No obstante, es importante que instales todas las versiones explícitamente. Los paquetes instalados automáticamente pueden borrarse cuando ejecutes brew autoremove para limpiar recursos.

Homebrew coloca un comando python3.x para cada versión en tu PATH, así como un comando python3 para su paquete principal de Python, que puede ser la versión estable actual o la anterior. Debes anular esto para asegurarte de que python3 apunta a la última versión. En primer lugar, consulta al gestor de paquetes la raíz de instalación (que depende de la plataforma):

$ brew --prefix python@3.12
/opt/homebrew/opt/python@3.12

A continuación, añade el directorio bin de esta instalación a tu PATH. Aquí tienes un ejemplo que funciona en el intérprete de comandos Bash :

export PATH="/opt/homebrew/opt/python@3.12/bin:$PATH"

Homebrew tiene algunas ventajas sobre los instaladores oficiales de python.org:

  • Puedes utilizar la línea de comandos para instalar, actualizar y desinstalar versiones de Python.

  • Homebrew incluye versiones de seguridad para versiones anteriores; en cambio, los instaladores depython. org sólo proporcionan hasta la última versión de corrección de errores.

  • Homebrew Python está estrechamente integrado con el resto de la distribución. En concreto, el gestor de paquetes puede satisfacer dependencias de Python como OpenSSL, lo que te da la opción de actualizarlas independientemente cuando sea necesario.

Por otro lado, Homebrew Python también tiene algunas limitaciones:

  • Homebrew no empaqueta versiones preliminares de las próximas versiones de Python.

  • Los paquetes suelen ir unos días o semanas por detrás de las versiones oficiales. Por ejemplo, Homebrew separa los módulos relacionados con las interfaces gráficas de usuario (GUI) del paquete principal de Python.

  • No puedes instalar y desinstalar paquetes Python en todo el sistema a menos que también estén disponibles como paquetes Homebrew. (Consulta "Entornos virtuales" para saber por qué no deberías instalar paquetes en todo el sistema para el desarrollo de todos modos).

  • Homebrew actualiza Python a las versiones de mantenimiento automáticamente y de una forma que puede romper los entornos virtuales instalados en la versión anterior.6

Consejo

Personalmente, recomiendo Hatch o Rye en lugar de Homebrew para gestionar Python en macOS (consulta "Un mundo feliz: instalar con Hatch y Rye"). Utiliza los instaladores de python.org para probar tu código con las versiones preliminares.

Los instaladores de python.org

El equipo del núcleo dePython proporciona instaladores binarios oficiales en lasección de descargas para macOS del sitio web de Python. Descarga el instalador universal2 de 64 bits para la versión que desees instalar. Los binarios universal2 del intérprete funcionan de forma nativa tanto en el silicio de Apple como en los chips de Intel.7

Para el desarrollo multiversión, recomiendo una instalación personalizada: busca el botónPersonalizar en el cuadro de diálogo del instalador. En la lista resultante de componentes instalables, desactiva las herramientas de línea de comandos Unix y el actualizador de perfiles Shell. Ambas opciones están diseñadas para poner el intérprete y algunos otros comandos en tu PATH.8 En su lugar, edita manualmente tu perfil de shell. Antepone el directorio/Library/Frameworks/Python.framework/Versions/3.x/bin a PATH, sustituyendo3.x por la versión actual de la función. Asegúrate de que la versión estable actual permanece al principio de PATH.

Nota

Después de instalar una versión de Python, ejecuta el comando Instalar certificados que se encuentra en la carpeta /Aplicaciones/Python 3.x/. Este comando instala la colección curada de certificados raíz de Mozilla, necesarios para establecer conexiones seguras a Internet desde Python.

Cuando instales una versión corregida de una versión de Python que ya esté presente en el sistema, sustituirá a la instalación existente. Puedes desinstalar una versión de Python eliminando estos dos directorios:

  • /Biblioteca/Estructuras/Python.framework/Versiones/3.x/

  • /Aplicaciones/Python 3.x/

Instalar Python en Linux

El equipo del núcleo de Python no proporciona instaladores binarios para Linux. Generalmente, la forma preferida de instalar software en distribuciones Linux es utilizar el gestor de paquetes oficial. Sin embargo, esto no es inequívocamente cierto cuando se instala Python para el desarrollo: aquí tienes algunas advertencias importantes:

  • El Python de sistema de una distribución Linux puede ser bastante antiguo, y no todas las distribuciones incluyen versiones alternativas de Python en sus principales repositorios de paquetes.

  • Las distribuciones de Linux tienen normas obligatorias sobre cómo pueden empaquetarse las aplicaciones y las bibliotecas. Por ejemplo, la Política de Python de Debian exige que el módulo estándar ensurepip se envíe en un paquete aparte; como resultado, no puedes crear entornos virtuales en un sistema Debian por defecto (una situación que suele solucionarse instalando el paquete python3-full ).

  • El paquete principal de Python en una distribución Linux sirve de base para otros paquetes que requieren un intérprete de Python. Estos paquetes pueden incluir partes críticas del sistema, como el gestor de paquetes DNF de Fedora . Por ello, las distribuciones aplican salvaguardas para proteger la integridad del sistema; por ejemplo, la mayoría de las distribuciones impiden instalar o desinstalar paquetes en todo el sistema mediante pip.

En las siguientes secciones, echaré un vistazo a la instalación de Python en dos de las principales distribuciones de Linux, Fedora y Ubuntu. Después, cubriré algunos métodos genéricos de instalación que no utilizan el gestor de paquetes oficial: Homebrew, Nix, pyenv y Conda. También te presentaré el Lanzador de Python para Unix, un paquete de terceros que pretende llevar la utilidad py a Linux, macOS y sistemas similares.

Fedora Linux

Fedora es una distribución Linux de código abierto patrocinada principalmente por Red Hat y es la fuente upstream de Red Hat Enterprise Linux (RHEL). Fedora es conocida por su excelente compatibilidad con Python, y Red Hat emplea a varios desarrolladores del núcleo de Python.

Python viene preinstalado en Fedora, y puedes instalar versiones adicionales de Python utilizando DNF:

sudo dnf install python3.x

Instala una nueva versión de Python.

sudo dnf upgrade python3.x

Actualiza una versión de Python a una versión de mantenimiento.

sudo dnf remove python3.x

Desinstalar una versión de Python.

Fedora tiene paquetes para todas las versiones de características activas y versiones preliminares de CPython, la implementación de referencia de Python, así como paquetes con implementaciones alternativas como PyPy. Una forma cómoda de abreviar para instalar todos ellos a la vez es instalar el paquete tox:

$ sudo dnf install tox

Por si te lo estás preguntando, tox es una herramienta de automatización de pruebas que facilita la ejecución de un conjunto de pruebas con varias versiones de Python; su paquete de Fedora incluye la mayoría de los intérpretes disponibles como dependencias recomendadas. Tox es también el antepasado espiritual de Nox, el tema del Capítulo 8.

Ubuntu Linux

Ubuntu es una popular distribución de Linux basada en Debian y financiada por Canonical Ltd. Ubuntu sólo distribuye una única versión de Python en sus repositorios principales; otras versiones de Python, incluidas las versiones preliminares, se proporcionan mediante unArchivo Personal de Paquetes (PPA). Un PPA es un repositorio de software mantenido por la comunidad en Launchpad, la plataforma de colaboración de software gestionada por Canonical.

Tu primer paso en un sistema Ubuntu debería ser añadir el PPA deadsnakes:

$ sudo apt update && sudo apt install software-properties-common
$ sudo add-apt-repository ppa:deadsnakes/ppa && sudo apt update

Ahora puedes instalar versiones de Python utilizando , el gestor de paquetes APT:

sudo apt install python3.x-full

Instala una nueva versión de Python.

sudo apt upgrade python3.x-full

Actualiza una versión de Python a una versión de mantenimiento.

sudo apt remove python3.x-full

Desinstalar una versión de Python.

Consejo

Recuerda incluir siempre el sufijo -full al instalar Python en Debian y Ubuntu. Los paquetes python3.x-full incluyen toda la biblioteca estándar y certificados raíz actualizados. En particular, garantizan que puedas crear entornos virtuales.

Otras distribuciones de Linux

¿Qué haces si tu distribución de Linux no incluye varias versiones de Python? La respuesta tradicional es "crea tu propio Python". Esto puede parecer aterrador, pero veremos lo sencillo que se ha vuelto actualmente construir Python en"Instalar Python con pyenv". Sin embargo, resulta que construir desde el código fuente no es tu única opción. Varios gestores de paquetes multiplataforma proporcionan paquetes binarios de Python; de hecho, ya has visto uno de ellos.

La distribución Homebrew (ver "Homebrew Python") está disponible en para Linux y macOS, y la mayor parte de lo que he dicho antes se aplica también a Linux. La principal diferencia entre ambas plataformas es la raíz de instalación: Homebrew en Linux instala los paquetes en /home/linuxbrew/.linuxbrew por defecto en lugar de/opt/homebrew. Tenlo en cuenta cuando añadas las instalaciones de Python de Homebrew a tu PATH.

Una forma popular multiplataforma de instalar Python es la distribución Anaconda, que está orientada a la informática científica y es compatible con Windows, macOS y Linux. Hablaré de Anaconda en una sección aparte al final de este capítulo (consulta"Instalar Python desde Anaconda").

El lanzador de Python para Unix

El Lanzador de Python para Unix es un port de la utilidad oficial py a Linux y macOS, así como a cualquier otro sistema operativo que soporte el lenguaje de programación Rust. Su principal ventaja es ofrecer una forma unificada y multiplataforma de lanzar Python, con un valor por defecto bien definido cuando no se especifica ninguna versión: el intérprete más reciente del sistema.

El comando py es un método cómodo y portátil para lanzar intérpretes que evita algunos escollos de invocar Python directamente (véase "Localización de intérpretes de Python"). Por este motivo, lo utilizaré a lo largo de este libro. Puedes instalar el paquetepython-launcher con varios gestores de paquetes , como Homebrew, DNF y Cargo.

El Lanzador de Python para Unix descubre los intérpretes mediante buscando comandos en la variable de entorno PATH. pythonx.y comandos. Por lo demás, funciona de forma muy parecida a su homólogo de Windows (ver"El lanzador de Python para Windows"). Aunque py lanza por sí solo el Python más reciente, también puedes solicitar una versión específica; por ejemplo, py -3.12 equivale a ejecutar python3.12.

A continuación se muestra una sesión de ejemplo utilizando el sistema macOS de laFigura 1-2. (Python 3.13 era una versión preliminar en el momento de escribir esto, así que he cambiado el intérprete por defecto poniendo PY_PYTHON yPY_PYTHON3 por 3.12.)

$ py -V
3.12.1
$ py -3.11 -V
3.11.7
$ py --list
 3.13 │ /Library/Frameworks/Python.framework/Versions/3.13/bin/python3.13
 3.12 │ /opt/homebrew/bin/python3.12
 3.11 │ /opt/homebrew/bin/python3.11
 3.10 │ /opt/homebrew/bin/python3.10

Si hay un entorno virtual activo, py utiliza por defecto el intérprete de ese entorno en lugar del intérprete de todo el sistema (ver"Entornos virtuales"). Una regla especial del Lanzador de Python para Unix hace más cómodo trabajar con entornos virtuales: si el directorio actual (o uno de sus padres) contiene un entorno virtual con el nombre estándar .venv, no necesitas activarlo explícitamente.

Puedes ejecutar muchas herramientas de terceros pasando su nombre de importación a la opción -mintérprete. Supongamos que has instalado pytest (un marco de pruebas) en varias versiones de Python. Utilizar py -m pytest te permite determinar qué intérprete debe ejecutar la herramienta. En cambio, un pytest desnudo utiliza el comando que aparezca primero en tu PATH.

Si invocas a py con un script de Python pero no especificas una versión, pyinspecciona la primera línea del script en busca de un shebang: unalínea que especifique el intérprete del script. Utiliza aquí la forma canónica: #!/usr/bin/env python3. Los scripts de punto de entrada son una forma más sostenible de vincular un script a un intérprete concreto, porque los instaladores de paquetes pueden generar la ruta correcta del intérprete durante la instalación (consulta "Scripts de punto de entrada").

Advertencia

Por compatibilidad con la versión de Windows, el Lanzador de Python utiliza sólo la versión de Python de shebangs, no la ruta completa del intérprete. Como resultado, puedes acabar con un intérprete diferente que si invocaras el script directamente sin py.

Instalar Python con pyenv

Pyenv es un gestor de versiones de Python para macOS y Linux. Incluye unaherramienta decompilación-tambiéndisponible como programa independiente llamado python-build- que descarga, compila e instala versiones de Python en tu directorio personal. Pyenv te permite activar y desactivar estas instalaciones globalmente, por directorio de proyecto o por sesión de shell.

Nota

En esta sección, utilizarás pyenv como herramienta de compilación. Si estás interesado en utilizar pyenv como gestor de versiones, consulta ladocumentación oficial para conocer los pasos adicionales de configuración. Discutiré algunas de las ventajas y desventajas en "Gestión de versiones de Python con pyenv".

La mejor forma de instalar pyenv en macOS y Linux es utilizando Homebrew:

$ brew install pyenv sqlite3 xz zlib tcl-tk

Además del propio pyenv, este comando también instala las dependencias de compilación de Python. Si utilizas un método de instalación diferente, consulta lawiki de pyenv para obtener instrucciones específicas de la plataforma sobre cómo configurar tu entorno de compilación.

Muestra las versiones de Python disponibles utilizando el siguiente comando:

$ pyenv install --list

La lista de intérpretes es impresionante. No sólo cubre todas las versiones activas de Python, sino que también incluye versiones preliminares, versiones de desarrollo no publicadas, casi todas las versiones puntuales publicadas en las dos últimas décadas, y una gran cantidad de implementaciones alternativas, como PyPy, GraalPy, MicroPython, Jython, IronPython y Stackless Python.

Puedes compilar e instalar cualquiera de estas versiones pasándolas a pyenv install:

$ pyenv install 3.x.y

Cuando utilices pyenv como mera herramienta de compilación, como estamos haciendo aquí, tendrás que añadir manualmente cada instalación a PATH. Puedes encontrar su ubicación utilizando el comandopyenv prefix 3.x.y y añadirle /bin. Aquí tienes un ejemplo para el shell Bash :

export PATH="$HOME/.pyenv/versions/3.x.y/bin:$PATH"

La instalación de una versión de mantenimiento con pyenv no actualiza implícitamente los entornos virtuales y las herramientas de desarrollo existentes en la misma versión de características, por lo que tendrás que volver a crear estos entornos utilizando la nueva versión.

Cuando ya no necesites una instalación, puedes eliminarla así:

$ pyenv uninstall 3.x.y

Por defecto, pyenv no activa la optimización guiada por perfil (PGO) ni la optimización en tiempo de enlace (LTO) al construir el intérprete. Segúnla Python Performance Benchmark Suite, estas optimizaciones pueden suponer un aumento significativo de la velocidad de los programas Python con CPU, entre un 10% y un 20%. Puedes activarlas en utilizando la variable de entornoPYTHON_CONFIGURE_OPTS:

$ export PYTHON_CONFIGURE_OPTS='--enable-optimizations --with-lto'

A diferencia de la mayoría de los instaladores de macOS, pyenv utiliza por defecto un esquema de instalación POSIX en lugar de las construcciones framework típicas de esta plataforma. Si estás en macOS, te aconsejo que actives las compilaciones framework para mantener la coherencia en .9 Puedes hacerlo añadiendo la opción de configuración --enable-frameworka la lista anterior.

Instalar Python desde Anaconda

Anaconda es una distribución de software de código abierto para la informática científica, mantenida por Anaconda Inc. Su pieza central es Conda, un gestor de paquetes multiplataforma para Windows, macOS y Linux. Los paquetes Conda pueden contener software escrito en cualquier lenguaje, como C, C++, Python, R o Fortran.

En esta sección, utilizarás Conda para instalar Python. Conda no instala paquetes de software globalmente en tu sistema. Cada instalación de Python está contenida en un entorno Conda y aislada del resto de tu sistema. Un entorno Conda típico se centra en las dependencias de un proyecto concreto -por ejemplo, un conjunto de bibliotecas para aprendizaje automático o ciencia de datos-, del que Python es sólo una entre muchas.

Antes de que puedas crear entornos Conda, necesitarás arrancar un entorno base que contenga el propio Conda. Hay varias formas de hacerlo: puedes instalar la distribución Anaconda completa, o puedes utilizar el instalador Miniconda con sólo Conda y unos pocos paquetes básicos. Tanto Anaconda como Miniconda descargan paquetes del canal por defecto, que puede requerir una licencia comercial para uso empresarial.

Miniforge es una tercera alternativa de -es similar a Miniconda pero instala paquetes del canal conda-forge mantenido por la comunidad. Puedes obtener Miniforge utilizando sus instaladores oficiales deGitHub, o puedes instalarlo desde Homebrew en macOS y Linux:

$ brew install miniforge

Conda requiere la integración del shell para actualizar la ruta de búsqueda y el prompt del shell cuando activas o desactivas un entorno. Si has instalado Miniforge desde Homebrew, actualiza tu perfil de shell utilizando el comando conda init con el nombre de tu shell. Por ejemplo

$ conda init bash

Por defecto, el código de inicialización del shell activa automáticamente el entorno base en cada sesión. Puede que quieras desactivar este comportamiento si también utilizas instalaciones de Python no gestionadas por Conda:

$ conda config --set auto_activate_base false

El instalador de Windows no activa globalmente el entorno base. Interactúa con Conda utilizando el Prompt Miniforge del menú Inicio de Windows.

Enhorabuena, ¡ya tienes una instalación de Conda operativa en tu sistema! Vamos a utilizar Conda para crear un entorno con una versión específica de Python:

$ conda create --name=name python=3.x

Antes de poder utilizar esta instalación de Python, tienes que activar el entorno:

$ conda activate name

Actualizar Python a una versión más reciente es sencillo:

$ conda update python

Este comando se ejecutará en el entorno Conda activo. Lo bueno de Conda es que no actualizará Python a una versión que aún no sea compatible con las bibliotecas Python del entorno.

Cuando hayas terminado de trabajar en el entorno, desactívalo así:

$ conda deactivate

Conda no instala Python en todo el sistema, sino que cada instalación de Python forma parte de un entorno Conda aislado. Conda adopta una visión holística de un entorno: Python no es más que una dependencia de tus proyectos, a la par que las bibliotecas del sistema, los paquetes de Python de terceros y incluso los paquetes de software de otros ecosistemas lingüísticos.

Un mundo feliz: Instalación con Hatch y Centeno

Mientras escribía este libro, los responsables del proyecto Python , Rye y Hatch, añadieron soporte para instalar intérpretes de Python en las principales plataformas. Ambos utilizan intérpretes de la colección Python Standalone Builds y del proyecto PyPy.

Tanto Rye como Hatch se distribuyen como ejecutables independientes, es decir, puedes instalarlos fácilmente en un sistema que no tenga Python. Consulta su documentación oficial para obtener instrucciones detalladas de instalación.

Hatch te permite instalar todos los intérpretes de CPython y PyPy compatibles con tu plataforma con un solo comando:

$ hatch python install all

Este comando también añade los directorios de instalación a tu PATH.10 Vuelve a ejecutar el comando con la opción--update para actualizar los intérpretes a versiones más recientes. Hatch organiza los intérpretes por versión de características, por lo que las versiones de parches sobrescriben la instalación existente.

Rye busca intérpretes en el directorio ~/.rye/py. Normalmente, esto ocurre entre bastidores cuando sincronizas las dependencias de tu proyecto. Pero también está disponible como comando dedicado:

$ rye fetch 3.12
$ rye fetch 3.11.8
$ rye fetch pypy@3.10

El segundo ejemplo coloca el intérprete en ~/.rye/py/cpython@3.11.8/bin(Linux y macOS). Puedes instalar en otro directorio utilizando la opción--target-path=<dir>. Esto coloca el intérprete en <dir> en Windows y en<dir>/bin en Linux y macOS. Rye no añade el intérprete a tu PATH cuando trabajas fuera de un proyecto.

Una visión general de los instaladores

La Figura 1-3 ofrece una visión general de los principales métodos de instalación de Python para Windows, macOS y Linux.

Aquí tienes algunas orientaciones, caso por caso, sobre cómo elegir un instalador:

  • Como norma general, instala compilaciones independientes de Python utilizando Hatch.

  • Para la informática científica, recomiendo utilizar Conda en su lugar.

  • Obtén las versiones preliminares de python. org si estás en Windows o macOS. Si estás en Linux, constrúyelos desde el código fuente con pyenv.

  • En Fedora Linux, utiliza siempre DNF.

  • En Ubuntu Linux, utiliza siempre el PPA deadsnakes con APT.

Elige Nix en macOS y Linux si necesitas una compilación reproducible de Python.

An overview of Python installation methods for Windows, Linux, and macOS
Figura 1-3. Instaladores de Python para Windows, macOS y Linux

Resumen

En este capítulo, has aprendido a gestionar las instalaciones de Python de en Windows, macOS y Linux. Utiliza el Lanzador de Python para seleccionar los intérpretes instalados en tu sistema. Además, audita tu ruta de búsqueda para asegurarte de que tienes bien definidos los comandos python y python3.

El siguiente capítulo se centra en una instalación de Python: su contenido y estructura, y cómo interactúa tu código con ella. También aprenderás sobre sus primos ligeros, los entornos virtuales, y las herramientas que han evolucionado en torno a ellos.

1 Aunque CPython es la implementación de referencia de Python, hay bastantes más entre las que elegir: bifurcaciones orientadas al rendimiento como PyPy y Cinder, reimplementaciones como RustPython y MicroPython, y adaptaciones a otras plataformas como WebAssembly, Java y .NET.

2 En el momento de escribir estas líneas, a principios de 2024, la versión de soporte a largo plazo de Debian Linux incluye versiones parcheadas de Python 2.7.16 y 3.7.3, ambas publicadas hace media década (la distribución "de pruebas" de Debian, que se utiliza ampliamente para el desarrollo, incluye una versión actual de Python).

3 A partir de Python 3.13, las versiones con correcciones de errores se proporcionan durante dos años después de la versión inicial.

4 Stack Overflow tiene una buena guía paso a paso para crear instaladores de Windows.

5 "Entornos virtuales" cubre los entornos virtuales en detalle. Por ahora, puedes pensar en un entorno virtual como una copia superficial de una instalación completa de Python que te permite instalar un conjunto separado de paquetes de terceros.

6 Justin Mayer, "El Python casero no es para ti", 3 de febrero de 2021.

7 ¿Tienes un Mac con silicio Apple, pero programas que deben ejecutarse en procesadores Intel? Te alegrará saber que los instaladores de python. org también proporcionan un binario python3-intel64 que utiliza el conjunto de instrucciones x86_64. Puedes ejecutarlo en silicio Apple gracias al entorno de traducción Rosetta de Apple.

8 La opción Herramientas de la línea de comandos Unix coloca enlaces simbólicos en el directorio /usr/local/bin, lo que puede entrar en conflicto con los paquetes Homebrew y otras versiones de python.org. Un enlace simbólico (symlink) es un tipo especial de archivo que apunta a otro archivo, muy parecido a un acceso directo en Windows.

9 Por razones históricas, las compilaciones del framework utilizan una ruta diferente para el directorio del sitio por usuario, la ubicación donde se instalan los paquetes si invocas pip fuera de un entorno virtual y sin privilegios administrativos. Esta disposición diferente de la instalación puede impedirte importar un paquete previamente instalado.

10 En una futura versión, Hatch añadirá también intérpretes al registro de Windows, permitiéndote utilizarlos con el Lanzador de Python.

Get Herramientas Python hipermodernas now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.