Ajout de GDAL en tant que dépendance au package Python?

9

J'essaie d'empaqueter un script Python qui utilise GDAL pour PyPI. J'ai commencé par inclure une référence directe dans mon setup.py:

install_requires=['GDAL==1.11.2'],

De cette façon, le package n'a pas pu être installé dans mon environnement virtuel de test:

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

Je l'ai ensuite essayé avec une référence à pygdal, car il est marqué comme une version conviviale de virtualenv:

install_requires=['pygdal'],

De cette façon, l'installation se termine sans erreur (mais avec la charge habituelle d'avertissements de compilation). Cependant, lorsque j'invoque le script, je récupère cette erreur:

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

Quelle est la bonne façon de définir GDAL en tant que dépendance?

Mise à jour : La dépendance semble être correctement déclarée, le problème est probablement en amont, avec le package GDAL lui-même. Plus de détails sur StackOverflow .

Luís de Sousa
la source
5
Je dirais qu'une pure question Python sur gdal est valide ici.
John Powell
2
Intéressant de voir comment les critiques semblent si certains qu'il s'agit d'une question strictement Python mais se sont jusqu'à présent abstenus de montrer ce que c'est.
Luís de Sousa
6
C'est une question python et GDAL et je pense sur le sujet
Ian Turton
3
Ceci a été publié sur plusieurs postes
Evil Genius
1
@EvilGenius Je vote normalement contre les publications croisées, mais dans ce cas, je peux l'approuver parce que le vote serré initial sur la question ici a indiqué que c'était la façon de procéder.
PolyGeo

Réponses:

3

Avant d'installer la liaison python GDAL, vous devez installer GDAL sur votre système.

apt-get install -y libgdal-dev

Après cela, définissez les variables et installez la liaison

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

La version du système GDAL doit être supérieure aux liaisons de version.

Winsent
la source