Python3: Instalação no Debian 8.x (Jessie)

Author

Mario Luiz Bernardinelli <mariolb _at_ gmail _dot_ com>

Version

0.1

Date

2019-05-08

Python-3.7.2

Este documento contém as informações necessárias para instalar a versão 3.7.2 do Python no Debian Linux Etch (9.x) à partir do código fonte.

Esta instalação não irá remover a versão do Python instalada no sistema, mas permitirá o uso de uma versão mais atual da linguagem e do interpretador. Optei por não substituir a versão original do sistema porque muitas aplicações e ferramentas do sistema no Debian dependem do Python e a versão da distribyuição possui muitos módulos específicos.

Instalando os pré-requisitos

Instale os seguintes pacotes necessários para a compilação do Python3:

sudo aptitude install build-essential libbz2-dev \
     libsqlite3-dev libreadline-dev \
     zlib1g-dev libncurses5-dev libssl-dev libgdbm-dev \
     libsqlite3-dev dpkg-dev libncursesw5-dev \
     libssl-dev libgdbm-dev libc6-dev libsqlite3-dev tk-dev

Descompacte, configure, compile e instale o Python (estou assumindo que o arquivo do código fonte do Python já tenha sido baixado do site http://www.python.org):

tar xJvf Python-3.7.2.tar.xz
cd Python-3.7.2
./configure --prefix=/opt/python-3.7.2 --enable-shared --enable-ipv6
make
sudo make install

Atualize o cache de bibliotecas do sistema operacional. Para fazer isto, crie o arquivo /etc/ld.so.conf.d/01-python-3.7.2.conf e adicione o seguinte conteúdo:

/opt/python-3.7.2/lib

Grave o arquivo e atualize o cache das bibliotecas:

sudo ldconfig

Atualize as ferramentas pip e setuptools:

cd /opt/python-3.7.2/bin
sudo ./pip3 install --upgrade pip
sudo ./pip install --upgrade setuptools

Instale o Cython (biblioteca para uso de código em C/C++ junto com Python):

sudo ./pip3 install cython

Tornando o Python padrão do sistema

Se você utiliza Debian, então você pode alterar o executável python padrão do sistema utilizando a ferramenta update-alternatives. Exemplo:

sudo update-alternatives --install /usr/bin/python3 python3 \
                /opt/python-3.7.2/bin/python3 100

Lembre-se, no entanto, que isto fará com que todos os programas que utilizam Python na versão 3 passem a utilizar a nova versão instalada. No entanto, os executáveis contidos no diretório /opt/python-3.7.2/bin deverão ser chamados utilizando o caminho completo, como é o caso do PIP.

Adicione a nova versão do Python no PATH de seu usuário: edite o arquivo ~/.bashrc e altera a variável PATH. Veja o exemplo:

export PATH=/home/mario/bin:/opt/python-3.7.2/bin:/opt/Qt5.12.1/Tools/QtCreator/bin/:$PATH

Qt5

Para que o PySide2 funcione, é preciso instalar a biblioteca Qt5, juntamente com as ferramentas de desenvolvimento.

Instale as as dependências:

sudo aptitude install libpoppler-qt5-1 libqt5clucene5 libqt5concurrent5 \
    libqt5core5a  libqt5dbus5  libqt5designer5  libqt5gui5  libqt5help5 \
    libqt5network5 libqt5opengl5 libqt5opengl5-dev libqt5printsupport5 \
    libqt5qml5 libqt5quick5 libqt5script5 libqt5sql5 libqt5sql5-sqlite \
    libqt5svg5 libqt5test5 libqt5webkit5 libqt5widgets5 libqt5xml5 \
    libqt5xmlpatterns5 libqt5xmlpatterns5-dev  python-pyqt5 \
    python-pyqt5.qtsvg python-pyqt5.qtwebkit qt5-qmake qtbase5-dev \
    libqt5xmlpatterns5-dev

Instale o módulo de suporte ao Qt5 no Python:

cd /opt/python-3.7.2/bin
sudo ./pip3 install PyQt5

PySide2

A biblioteca PySide2 está disponível no repositório PyPI, o que torna a instalação quase que trivial (desde que as dependências descritas anteriormente esteja instaladas):

cd /opt/python-3.7.2/bin
sudo ./pip3 install PySide2

Pacotes opcionais

Eu costumo utilizar algumas ferramentas desenvolvidas em Python, tanto ferramentas disponíveis na Internet como de minha própria autoria e que precisam de alguns módulos específicos. Então, até para manter uma lista destes módulos e aplicações, segue a lista que eu costumo instalar após a instalação do Python. No entanto, alguns destes módulos possuem dependências que precisam ser instaladas antes:

Módulo

Biblioteca

Comando para instalação

lxml

libxml2-dev, libxslt1-dev

sudo aptitude install libxml2-dev libxslt1-dev

cryptography

libffi-dev

sudo aptitude install libffi-dev

GeoIP

libgeoip-dev, libgeoip-bin

sudo aptitude install libgeoip-dev libgeoip-bin

Para facilitar a vida, podemos criar um arquivo texto contendo todos os módulos e aplicações que desejamos instalar, com um item por linha, conforme a lista a seguir:

alabaster
beautifulsoup4
chardet
cloud-sptheme
cryptography
dnspython3
flake8
Flask
httplib2
imapclient
lxml
matplotlib
netaddr
nose
numpy
oauth2client
oauthlib
paho-mqtt
pandas
paramiko
pdfrw
pep8
psutil
psycopg2
psycopg2-binary
pydbus
pydialog
pygame
PyInstaller
pymongo
pymssql
pyPdf
pypyodbc
pyserial
python-dateutil
pythondialog
python-magic
pyusb
requests
requests-oauthlib
rsa
scapy
scikit-learn
scipy
shodan
Slowloris
Sphinx
sphinx-bootstrap-theme
sphinxcontrib-disqus
sphinx-intl
sphinxjp.themecore
sphinxjp.themes.htmlslide
sphinxjp.themes.tinkerpress
sphinx-rtd-theme
sqlalchemy
sslscan
Tinkerer
tornado
virustotal2
websockets
Werkzeug
wheel
xlrd

Criado o arquivo, basta solicitar so pip que instale todos os módulos. Por exemplo, supondo que o arquivo com os nomes dos módulos e aplicações seja o arquivo /tmp/requirements.txt, o comando a seguir instalará todos os módulos contidos no arquivo:

cd /opt/python-3.7.2/bin
sudo ./pip3 install -r /tmp/requirements.txt

Um detalhe importante: a instalação a partir de arquivo é muito prática, porém deve-se ficar atento para possíveis erros. Nestes casos, observe as mensagens na tela e corrija os problemas.

Python-3.5.1

Deixei este capítulo, mesmo não sendo a versão mais nova do Python porque ela contém algumas informações sobre instalação de pacotes de forma diferente, especialmente do PySide.

Instalando os pré-requisitos

Instale os seguintes pacotes necessários para a compilação do Python3:

sudo aptitude install build-essential libbz2-dev \
     libsqlite3-dev libreadline-dev \
     zlib1g-dev libncurses5-dev libssl-dev libgdbm-dev \
     libsqlite3-dev dpkg-dev libncursesw5-dev \
     libssl-dev libgdbm-dev libc6-dev libsqlite3-dev tk-dev

Descompacte, configure, compile e instale o Python (estou assumindo que o arquivo do código fonte do Python já tenha sido baixado do site http://www.python.org):

tar xJvf Python-3.5.1.tar.xz
cd Python-3.5.1
./configure --prefix=/opt/python-3.5.1 --enable-shared --enable-ipv6
make
sudo make install

Atualize as ferramentas pip e setuptools:

cd /opt/python-3.5.1/bin
sudo ./pip3 install --upgrade pip
sudo ./pip install --upgrade setuptools

Se seu sistema tiver alguma outra versão do Python-3.x instalada, então os comandos anteriores irão provocar um erro de biblioteca e será necessário atualizar o cache de bibliotecas. Para fazer isto, crie o arquivo /etc/ld.so.conf.d/01-python-3.5.1.conf e adicione o seguinte conteúdo:

/opt/python-3.5.1/lib

Grave o arquivo e atualize o cache das bibliotecas:

sudo ldconfig

Então, atualize as ferramentas pip e setuptools:

./pip3 install --upgrade pip setuptools

Instale o Cython (biblioteca para uso de código em C/C++ junto com Python):

sudo ./pip3 install cython

Tornando o Python padrão do sistema

Se você utiliza Debian, então você pode alterar o executável python padrão do sistema utilizando a ferramenta update-alternatives. Exemplo:

sudo update-alternatives --install /usr/bin/python3 python3 \
                /opt/python-3.5.1/bin/python3 100

Lembre-se, no entanto, que isto fará com que todos os programas que utilizam Python na versão 3 passem a utilizar a nova versão instalada. No entanto, os executáveis contidos no diretório /opt/python-3.4.3/bin deverão ser chamados utilizando o caminho completo, como é o caso do PIP.

Qt5

Para que o PySide2 funcione, é preciso instalar a biblioteca Qt5, juntamente com as ferramentas de desenvolvimento.

Instale as as dependências:

sudo aptitude install libpoppler-qt5-1 libqt5clucene5 libqt5concurrent5 \
    libqt5core5a  libqt5dbus5  libqt5designer5  libqt5gui5  libqt5help5 \
    libqt5network5 libqt5opengl5 libqt5opengl5-dev libqt5printsupport5 \
    libqt5qml5 libqt5quick5 libqt5script5 libqt5sql5 libqt5sql5-sqlite \
    libqt5svg5 libqt5test5 libqt5webkit5 libqt5widgets5 libqt5xml5 \
    libqt5xmlpatterns5 libqt5xmlpatterns5-dev  python-pyqt5 \
    python-pyqt5.qtsvg python-pyqt5.qtwebkit qt5-qmake qtbase5-dev \
    libqt5xmlpatterns5-dev

Instale o módulo de suporte ao Qt5 no Python:

cd /opt/python-3.5.1/bin
sudo ./pip3 install PyQt5

PySide2

Depois de instalado o Qt5, pode-se iniciar a instalação do PySide2 via código fonte.

Baixe a última versão do PySide2:

git clone --recursive https://github.com/PySide/pyside2-setup.git

Compile e instale o pacote (isto pode demorar um pouco, dependendo do computador):

cd pyside2-setup
sudo /opt/python-3.5.1/bin/python3 setup.py install --openssl=/usr/bin/openssl

Nota

Observe que deve-se passar o caminho completo para o executável do OpenSSL.

Pacotes opcionais

Eu costumo utilizar algumas ferramentas desenvolvidas em Python, tanto ferramentas disponíveis na Internet como de minha própria autoria e que precisam de alguns módulos específicos. Então, até para manter uma lista destes módulos e aplicações, segue a lista que eu costumo instalar após a instalação do Python.

Módulos para desenvolvimento do meu site (Sphinx):

cd /opt/python-3.4.3/bin
sudo ./pip3 install --upgrade alabaster Sphinx sphinx-bootstrap-theme \
    sphinx-intl sphinx-rtd-theme sphinxcontrib-disqus sphinxjp.themecore \
    sphinxjp.themes.htmlslide sphinxjp.themes.tinkerpress Tinkerer \
    cloud-sptheme

Nota

Para alguns módulos apresentados a seguir pode ser necessário instalar algumas bibliotecas no sistema operacional, por exemplo:

Módulo

Biblioteca

Comando para instalação

lxml

libxml2-dev, libxslt1-dev

sudo aptitude install libxml2-dev libxslt1-dev

cryptography

libffi-dev

sudo aptitude install libffi-dev

GeoIP

libgeoip-dev, libgeoip-bin

sudo aptitude install libgeoip-dev libgeoip-bin

Instalação dos módulos opcionais (minha opção pessoal):

sudo ./pip install pyserial wheel matplotlib sqlalchemy lxml

sudo ./pip3 install --upgrade beautifulsoup4 cryptography dnspython \
    dnspython3 pymongo


sudo ./pip3 install --upgrade httplib2 netaddr numpy paramiko \
    pep8 pydbus pydialog

sudo ./pip3 install --upgrade python-dateutil pythondialog \
    requests requests-oauthlib websockets Werkzeug

sudo ./pip3 install --upgrade paho-mqtt

sudo ./pip3 install --upgrade pyusb xlrd

sudo ./pip3 install --upgrade Flask GeoIP geoip2  pdfrw pymssql \
    pyPdf pypyodbc python-magic XenAPI

sudo ./pip3 install --upgrade Slowloris sslscan tornado virustotal2

sudo ./pip3 install --upgrade shodan rsa oauth2client oauthlib nose

sudo ./pip3 install --upgrade google-api-python-client

sudo ./pip3 install --upgrade PyInstaller