Compilar e Instalar python 3.7

En ocasiones podemos encontrarnos con un sistema antiguo que no podemos cambiar por alguna razón. Al ser antiguo en este sistema no podemos instalar desde paquete Python 3.7, para esquivar este problema debemos compilar e instalar Python 3.7.

Dependencias

Por ejemplo si tenemos un sistema CentOS 7, debemos instalar las siguientes dependencias:

yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel

Por otro lado si estamos utilizando Ubuntu o Debian, las dependencias serían estas:

apt install build-essential libssl-dev libcrypto++-dev  libbz2-dev libffi-dev zlib1g zlib1g-dev

Descarga del código fuente

Después de instalar las dependencias, debemos descargar el paquete de código fuente de la versión de Python a compilar:

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

Compilando el código fuente

Tras descargar el paquete, descomprimimos el paquete y nos metemos dentro del directorio:

tar xzf Python-3.7.9.tgz
cd Python-3.7.9

Ya dentro del directorio, compilamos la versión:

./configure --enable-optimizations

Cuando se finalice la compilación con éxito, debemos instalar los binarios generados. Haciéndolo con “altinstall” realizamos la instalación de un Python secundario sin sobrescribir una versión existente de Python:

make altinstall

Un paso mas a realizar es la instalación de pip para poder instalar mas paquetes, para ello ejecutaremos lo siguiente:

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

También es buena idea instalar una versión de virtualenv, paquete para poder generar entornos virtuales:

pip3.7 install virtualenv

Finalmente para mantener los binarios por defecto de las otras versiones de Python:

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

Para resumir todo esto en un script, a continuación dejo el siguiente:

#/bin/bash
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
tar xzf Python-3.7.9.tgz
cd Python-3.7.9
./configure --enable-optimizations
make altinstall
wget https://bootstrap.pypa.io/get-pip.py
python3.7 get-pip.py
pip3.7 install virtualenv
mv /usr/local/bin/pip /usr/local/bin/pip.new
mv /usr/local/bin/virtualenv /usr/local/bin/virtualenv-3.7

Deja una respuesta