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.
Por ejemplo si tenemos un sistema CentOS 7, debemos instalar las siguientes dependencias:
yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel
Después de instalar las dependencias, debemos descargar el paquete de codigo fuente de la versión de python a compilar:
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
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 existo, debemos instalar los binarios generados. Haciendolo 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
Tambien 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