Instalar várias versões de Python sobre GNU/Linux

Introdução


Geralmente nos Sistemas Operacionais (SO) GNU/Linux, a linguagem Python já vem instalada por padrão. Por exemplo o Ubuntu 12.04.2 LTS vem com python-2.7.3; Scientific Linux release 6.3 vem com python-2.6.6; Debian GNU/Linux 6.0 vem com python-2.6.6; CentOS release 5 vem com python-2.4.3 e por aí a fora.

Em alguns casos específicos faz-se a necessidade de utilizar outras versões do interpretador Python, que não é necessariamente a nativa do SO.

Para estes casos, pode-se instalar o Python necessário, através do código fonte no diretório /opt, que é o lugar sugerido pela LSB (Linux Standard Base), onde pacotes opcionais de usuário deve estar contidos.


Para baixar a versão Python desejada, acesse a url oficial do Python em :

http://python.org/download/releases/

Até a confecção deste artigo as release do python disponíveis para download eram:
3.3.0
3.2.3
3.1.5
3.0.1
2.7.3
2.6.8
2.5.6
2.4.6
2.3.7
2.2.3
2.1.3
2.0.1
1.6.1
1.5.2

Dependências

Red-Hat Like:
# yum groupinstall "Development tools"
# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel

Debian Like:
# aptitude install build-essential zlib1g-dev zlibc libncurses5-dev libsqlite0-dev libreadline-dev tk-dev


Sintaxe


Em geral baixa-se os fontes do python compactados, descompacta-os, compila-os e instala.

Segue a sequencia de comandos:
wget http://www.python.org/ftp/python/x.x.x/Python-x.x.tgz
tar xjvf Python-x.x.tgz
cd Python-x.x
./configure --prefix=/opt/Python-x.x
make
sudo make install
ou para uma instalação alternativa:
wget http://www.python.org/ftp/python/x.x.x/Python-x.x.tgz
tar xjvf Python-x.x.tgz
cd Python-x.x
./configure --prefix=/opt/Python-x.x
make
sudo make altinstall

Onde x.x é a versão python de referência.

Instalação


Exemplo para Python-2.4.6:
wget http://www.python.org/ftp/python/2.4.6/Python-2.4.6.tar.bz2
tar xvzf Python-2.4.6.tar.bz2
cd Python-2.4.6
./configure --prefix=/opt/Python-2.4.6
make
sudo make install

Exemplo para Python-2.6.8:
wget http://www.python.org/ftp/python/2.6.8/Python-2.6.8.tgz
tar xvzf Python-2.6.8.tgz
cd Python-2.6.8
./configure --prefix=/opt/Python-2.6.8
make
sudo make install

Exemplo para Python-2.7.3:
wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz
tar xvzf Python-2.7.3.tgz
cd Python-2.7.3
./configure --prefix=/opt/Python-2.7.3
make
sudo make install

Exemplo para Python-3.3.0:
wget http://www.python.org/ftp/python/3.3.0/Python-3.3.0.tar.bz2
tar xvjf Python-3.3.0.tar.bz2
cd Python-3.3.0
./configure --prefix=/opt/Python-3.3.0
make
sudo make install

Agora instala-se a suite Setuptools, que contém o easy_install.

Baixe o Setuptools, e o instale no Python desejado:

wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
tar xvfz setuptools-0.6c11.tar.gz
cd setuptools-0.6c11
sudo /opt/Python-x.x.x/bin/python-x.x setup.py install


Configuração

Após a instalação da versão desejada, Se desejar pode ativar seus binários no SO, para não ter que digitar o path completo todas as vezes, execute umas das opções apresentadas abaixo.

Perene no SO para todos os usuários:
ln -s /opt/Python-x.x/bin/python-x.x /usr/bin/python-x.x

Perene no home para o usuário logado:
# mkdir ~/bin
# ln -s /opt/Python-x.x/bin/python-x.x ~/bin/python-x.x

Volátil no home para o usuário logado:
# echo $PATH
# PATH=/opt/Python-x.x/bin/python-x.x:$PATH
# echo $PATH

Troubleshooting

  • Máquinas 386 ou x64, com as dependencias instaladas, e apresenta RuntimeError: Compression requires the (missing) zlib module
    ./configure --prefix=/opt/Python-2.4.6 LDFLAGS="-L/usr/lib/i386-linux-gnu:/usr/lib/x86_64-linux-gnu" && make && make altinstall;
  • Se o modo anterior não funcionar, altere o arquivo setup.py na raiz dos fontes, e acrescente os diretorios das bibliotecas x64.
            # lib_dirs and inc_dirs are used to search for files;
            # if a file is found in one of those directories, it can
            # be assumed that no additional -I,-L directives are needed.
            lib_dirs = self.compiler.library_dirs + [
                '/lib64', '/usr/lib64',
                '/lib', '/usr/lib', '/usr/lib/x86_64-linux-gnu/',
                '/lib/x86_64-linux-gnu/',
                ]
    

Relacionados

Brito: INSTALAR VÁRIAS VERSÕES DE PYTHON SOBRE GNU/LINUX COM BOOTSTRAP

Comentários