Cómo compilar Python 3.10 en Ubuntu 20.04

En el mundo del desarrollo de software, mantenerse actualizado con las últimas versiones de los lenguajes de programación es crucial para aprovechar las nuevas funcionalidades y mejoras en seguridad y rendimiento. Python, siendo uno de los lenguajes más populares y versátiles, no es la excepción. En este artículo, te guiaré a través de un proceso detallado y técnico para compilar Python 3.10 en Ubuntu 20.04, utilizando herramientas y comandos específicos para lograrlo de manera eficiente.

Preparación del entorno

Antes de sumergirnos en la compilación de Python, es esencial preparar tu sistema Ubuntu 20.04 para asegurarnos de que el proceso se ejecute sin contratiempos. Esto incluye la actualización de los paquetes del sistema y la instalación de dependencias necesarias para la compilación de Python.

Para empezar, abre una terminal y ejecuta el siguiente comando para actualizar el índice de paquetes de tu sistema:

sudo apt update

Una vez actualizado el índice de paquetes, es momento de instalar algunas dependencias críticas que Python requiere para su compilación y ejecución. Ejecuta el siguiente comando para instalar estos paquetes:

sudo apt install -y gcc libssl-dev libbz2-dev libffi-dev zlib1g-dev make

Descarga y preparación del código fuente de Python

Con el entorno preparado, el siguiente paso es obtener el código fuente de Python 3.10.13, que es la versión que compilaremos. Para ello, utilizaremos wget, una herramienta que permite descargar archivos desde la web directamente a nuestra terminal. Antes de descargar el código fuente, asegúrate de eliminar cualquier archivo previo con el mismo nombre para evitar conflictos:

rm -f Python-3.10.13.tgz

Ahora, procede a descargar el archivo comprimido del código fuente de Python 3.10.13 con el siguiente comando:

wget https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tgz

Con el archivo descargado, el próximo paso es extraer su contenido. Utiliza el comando tar para descomprimir el archivo:

tar xzf Python-3.10.13.tgz

Después de extraer el archivo, cambia al directorio que contiene el código fuente:

cd Python-3.10.13

Compilación del código fuente

Antes de proceder con la compilación propiamente dicha, es una buena práctica limpiar cualquier compilación previa que pudiera estar presente en el directorio. Esto se hace con el comando make clean:

make clean

El siguiente paso es configurar el proceso de compilación. Python ofrece muchas opciones de configuración, pero nos centraremos en una configuración optimizada que incluye pip y configuraciones de ruta para las bibliotecas compartidas. Ejecuta el siguiente comando para configurar el entorno de compilación:

./configure --enable-optimizations --with-ensurepip=install --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"

Una vez configurado, procede a compilar Python utilizando make. Para aprovechar al máximo los recursos de tu sistema y agilizar el proceso de compilación, puedes especificar el número de trabajos que make debería ejecutar simultáneamente. Esto depende del número de núcleos de tu procesador. Suponiendo que tienes un procesador de 4 núcleos, puedes usar make -j 4 para compilar más rápido. Sin embargo, en esta guía, utilizaremos make altinstall para instalar Python sin sobrescribir la versión predeterminada del sistema:

make altinstall

Instalación de pip y virtualenv

Tras compilar e instalar Python, el siguiente paso es asegurarse de que pip, el administrador de paquetes de Python, esté actualizado y funcionando correctamente con nuestra nueva instalación de Python. A continuación, instalaremos virtualenv, una herramienta para crear entornos virtuales aislados, lo cual es esencial para la gestión de dependencias en proyectos Python.

Primero, descarga el script de instalación de pip:

wget https://bootstrap.pypa.io/get-pip.py

Ejecuta el script para instalar pip para Python 3.10:

python3.10 get-pip.py

Con pip ya instalado, procede a instalar virtualenv:

pip3.10 install virtualenv

Para evitar conflictos con otras versiones de Python, renombraremos los binarios de pip y virtualenv:

mv /usr/local/bin/pip /usr/local/bin/pip.new
mv /usr/local/bin/virtualenv /usr/local/bin/virtualenv-3.10

Uso de contenedores como alternativa a la compilación

Compilar Python desde el código fuente te proporciona control total sobre la instalación y configuración, permitiéndote optimizar el rendimiento y la seguridad. Sin embargo, este proceso puede ser tedioso y consumir tiempo. Como alternativa, puedes utilizar contenedores Docker para trabajar con diferentes versiones de Python de manera aislada y eficiente, sin la necesidad de compilar cada versión manualmente.

Docker simplifica la creación y gestión de entornos aislados para tus aplicaciones, conocidos como contenedores. Para iniciar un contenedor con Python 3.10.13, simplemente ejecuta el siguiente comando:

docker run -it --name python3 python:3.10.13-slim-bullseye

Este comando descarga la imagen oficial de Python 3.10.13 (basada en Debian Bullseye slim) y la ejecuta en un contenedor, proporcionándote un entorno Python aislado y listo para usar en cuestión de segundos.

Resumen de comandos

Con el fin de tenerlo todo agrupado en la secuencia correcta, este es el grupo de comandos que hemos ejecutado:

sudo apt update
sudo apt install -y gcc libssl-dev libbz2-dev libffi-dev zlib1g-dev make
rm -f Python-3.10.13.tgz
wget https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tgz
rm -f Python-3.10.13.tgz.*
tar xzf Python-3.10.13.tgz
cd Python-3.10.13
make clean
./configure --enable-optimizations --with-ensurepip=install --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make altinstall
wget https://bootstrap.pypa.io/get-pip.py
python3.10 get-pip.py
pip3.10 install virtualenv
mv /usr/local/bin/pip /usr/local/bin/pip.new
mv /usr/local/bin/virtualenv /usr/local/bin/virtualenv-3.10

Deja una respuesta