Instalando o pacote Python gdal
no virualenv no Linux
GDAL
fornece um bom conjunto de ferramentas para operações relacionadas ao GEO. No entanto, instalá-lo no virtualenv no Linux não é tarefa trivial.
Esta receita descreve como fazer isso.
Nota
aqui eu uso letras minúsculas gdal
para o pacote Python e maiúsculas GDAL
para a biblioteca geral do sistema.
Exigências
- permite o uso de bibliotecas osgeo (instaladas via
gdal
pacote Python) no virtualenv
- permitir a instalação no Linux Ubuntu
Métodos de instalação
Existem vários métodos para instalação. Um requer compilação e leva mais alguns minutos.
O outro está usando o pacote de rodas pygdal
e é muito rápido. De qualquer forma, para criar o pacote wheel, é necessário criá-lo uma vez e a criação inclui a etapa de compilação de qualquer maneira.
Sobre GDAL
pacotes e versões
GDAL
é uma biblioteca geral baseada em C (++) para cálculos relacionados ao GEO.
GDAL
Os utilitários podem ser instalados em todo o sistema, o que disponibiliza bibliotecas compartilhadas, mas não instala o próprio pacote Python.
GDAL
vem em versões diferentes e cada distribuição Linux pode, por padrão, instalar uma versão diferente.
O pacote Python gdal
requer compilação e não é trivial para instalação em sistemas baseados em Linux, pois espera que poucas variáveis ambientais sejam definidas. Isso dificulta a instalação no virtualenv.
Cada gdal
versão pode assumir uma versão diferente GDAL
e falhará na instalação se a versão esperada não estiver presente no sistema.
O pacote Python pygdal
é uma alternativa ao gdal
, que instala exatamente as mesmas coisas que gdal
, mas o faz de uma maneira muito mais amigável para o ambiente virtual.
pygdal
vem em versões que refletem a GDAL
versão relacionada . Portanto, com a GDAL
versão 1.10.1 no sistema, você deve instalar a pygdal
versão 1.10.1.
O pacote Python gdal
(assim como pygdal
) usa o pacote python raiz nomeado
osgeo
e possui um conjunto de submódulos, sendo um deles osgeo.gdal
.
Se necessário, versões diferentes do padrão GDAL
podem ser instaladas e usadas. Isso está fora do escopo desta descrição.
Os pacotes de rodas podem ser compilados de forma cruzada, isso também está fora do escopo.
Instalando GDAL
no sistema
Como pygdal
requer GDAL
a presença de bibliotecas compartilhadas, devemos instalá-las primeiro.
Supondo que GDAL
ainda não esteja instalado, a ligação gdal-config
reclamará e lhe dará uma dica de como acompanhar:
$ gdal-config --version
The program 'gdal-config' is currently not installed. You can install it by typing:
sudo apt-get install libgdal-dev
Siga a dica e instale-a:
$ sudo apt-get install libgdal-dev
Cada distribuição pode usar uma versão diferente de GDAL
. Para descobrir qual usamos:
$ gdal-config --version
1.10.1
Agora você sabe, GDAL
está instalado e a versão é 1.10.1 (a versão pode variar).
Instalar a pygdal
partir do pacote de origem (requer compilação)
Atualmente, pygdal
é fornecido apenas no pacote tar.gz, que contém fontes de pacote e requer compilação.
Supondo que a versão do GDAL
is 1.10.1
e que o nosso virtualenv já esteja ativado:
$ pip install pygdal==1.10.1
Pode demorar um pouco para ser concluído, se precisar de sonolência, o que também pode exigir alguma compilação. Apenas espere.
Verifique, está instalado:
$ pip freeze|grep pygdal
pygdal==1.10.1.0
A partir de agora, você poderá usar o pacote osgeo em seu código Python como desejar exatamente da mesma maneira como se fosse instalá-lo pelo gdal
pacote Python.
Criando um pacote de rodas para pygdal
Observe que os pacotes wheel devem ser criados para exatamente a mesma arquitetura, ou seja, devem corresponder:
- Arquitetura da CPU
- SO (Linux / Windows)
No nosso caso, também deve corresponder à versão do GDAL
instalado.
As etapas a seguir podem ser feitas no virtualenv ou não, como você desejar.
Primeiro, verifique se o pacote de rodas está instalado:
$ pip install wheel
Supondo que você tenha GDAL
instalado e a versão 1.10.1:
$ pip wheel pygdal==1.10.1.0
e espere até que seja concluído.
Depois disso, você encontrará a casa do leme do subdiretório e deve conter pacotes com a extensão `whl`:
$ ls wheelhouse
numpy-1.9.1-cp27-none-linux_x86_64.whl
pygdal-1.10.1.0-cp27-none-linux_x86_64.whl
Instalar a pygdal
partir de pacotes de rodas
A instalação a partir de pacotes formatados com rodas é muito mais rápida (um segundo em comparação com minutos), pois não requer compilação.
Observe que esse diretório com pacotes wheel pode ter qualquer nome, usaremos apenas o nome wheelhouse.
Ative o virtualenv primeiro.
Verifique se você possui no diretório wheelhouse os dois pacotes de roda necessários (para pygdal
e numpy
).
Verifique se GDAL
está instalado e se a versão corresponde à versão de pygdal
.
Instale a pygdal
partir do pacote da roda:
$ pip install pygdal==1.10.1.0 -f wheelhouse
A casa do leme -f deve apontar para o diretório com arquivos whl.
Não há necessidade de instalar numpy
, ele é instalado automaticamente.