Tabla de contenido
Por vezes podemos encontrar-nos com um sistema antigo que, por alguma razão, não podemos mudar. Sendo velho neste sistema não podemos instalar a partir do pacote Python 3.7, para evitar este problema devemos compilar e instalar o Python 3.7.
Unidades
Por exemplo, se tivermos um sistema CentOS 7, devemos instalar as seguintes dependências:
yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel
Por outro lado, se utilizarmos Ubuntu ou Debian, as dependências seriam as seguintes:
apt install build-essential libssl-dev libcrypto++-dev libbz2-dev libffi-dev zlib1g zlib1g-dev
Descarregar código fonte
Após a instalação das dependências, devemos descarregar o pacote de código fonte da versão Python a ser compilada:
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
Compilação do código fonte
Depois de descarregar o pacote, descomprima o pacote e vá para o directório:
tar xzf Python-3.7.9.tgz cd Python-3.7.9
Uma vez dentro do directório, compilamos a versão:
./configure --enable-optimizations
Quando a compilação for concluída com sucesso, precisamos de instalar os binários gerados. Ao fazê-lo com “altinstall” instalamos um Python secundário sem sobrescrever uma versão existente do Python:
make altinstall
Mais um passo é instalar pip para poder instalar mais pacotes, para isso executaremos o seguinte:
wget https://bootstrap.pypa.io/get-pip.py python3.7 get-pip.py
É também uma boa ideia instalar uma versão do virtualenv, um pacote para gerar ambientes virtuais:
pip3.7 install virtualenv
Finalmente, para manter os binários padrão das outras versões Python:
mv /usr/local/bin/pip /usr/local/bin/pip.new mv /usr/local/bin/virtualenv /usr/local/bin/virtualenv-3.7
Para resumir tudo isto num script, deixo-o abaixo:
#/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