Adicionando GDAL como dependência ao pacote Python?

9

Estou tentando empacotar um script Python que usa GDAL para PyPI. Comecei incluindo uma referência direta no meu setup.py:

install_requires=['GDAL==1.11.2'],

Dessa forma, o pacote não foi instalado no meu ambiente virtual de teste:

extensions/gdal_wrap.cpp:2855:22: fatal error: cpl_port.h: No such file or directory
 #include "cpl_port.h"
                      ^
compilation terminated.
error: Setup script exited with error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

Eu tentei com uma referência a pygdal, uma vez que está marcada como uma versão amigável para virtualenv:

install_requires=['pygdal'],

Dessa forma, a instalação termina sem erros (mas com a carga usual de avisos de compilação). No entanto, quando invoco o script, recebo esse erro de volta:

Traceback (most recent call last):
  File "/home/desouslu/.virtualenvs/test_p3/bin/hasc2gml", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/home/desouslu/.virtualenvs/test_p3/lib/python3.4/site-packages/pkg_resources.py", line 2716, in <module>
    working_set.require(__requires__)
  File "/home/desouslu/.virtualenvs/test_p3/lib/python3.4/site-packages/pkg_resources.py", line 685, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/home/desouslu/.virtualenvs/test_p3/lib/python3.4/site-packages/pkg_resources.py", line 588, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pygdal

Qual é a maneira correta de definir o GDAL como uma dependência?

Atualização : a dependência parece ter sido declarada corretamente, o problema provavelmente está no upstream, com o próprio pacote GDAL. Mais detalhes em StackOverflow .

Luís de Sousa
fonte
5
Eu diria que uma pergunta pura em Python sobre gdal é válida aqui.
John Powell
2
Interessante como os revisores parecem tão certos de que se trata de uma questão estritamente Python, mas até agora se abstiveram de apontar o que é.
Luís de Sousa
6
É uma pergunta sobre python e GDAL e eu penso no tópico
Ian Turton
3
Isso foi postado cruzadamente
Evil Genius
11
@EvilGenius Normalmente, eu voto negativo nas postagens cruzadas, mas, neste caso, posso perdoá-la porque a votação inicial original sobre a questão aqui indicou que esse era o caminho a seguir.
PolyGeo

Respostas:

3

Antes de instalar a ligação python GDAL, você deve instalar o GDAL no seu sistema.

apt-get install -y libgdal-dev

Depois disso, defina variáveis ​​e instale a ligação

CPLUS_INCLUDE_PATH=/usr/include/gdal \
C_INCLUDE_PATH=/usr/include/gdal \
pip install GDAL

A versão do sistema GDAL deve ser superior às ligações da versão.

winsent
fonte