GDAL als Abhängigkeit zum Python-Paket hinzufügen?

9

Ich versuche ein Python-Skript zu packen, das GDAL für PyPI verwendet. Ich begann damit, eine direkte Referenz in meine setup.py:

install_requires=['GDAL==1.11.2'],

Auf diese Weise konnte das Paket in meiner virtuellen Testumgebung nicht installiert werden:

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

Ich habe es dann mit einem Verweis auf versucht pygdal, da es als virtualenv-freundliche Version markiert ist:

install_requires=['pygdal'],

Auf diese Weise wird die Installation fehlerfrei abgeschlossen (jedoch mit den üblichen Kompilierungswarnungen). Wenn ich dann das Skript aufrufe, erhalte ich diesen Fehler zurück:

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

Was ist der richtige Weg, um GDAL als Abhängigkeit festzulegen?

Update : Die Abhängigkeit scheint korrekt deklariert zu sein, das Problem ist wahrscheinlich vorgelagert, mit dem GDAL-Paket selbst. Weitere Details bei StackOverflow .

Luís de Sousa
quelle
5
Ich würde argumentieren, dass eine reine Python-Frage zu gdal hier gültig ist.
John Powell
2
Interessant, wie die Rezensenten so sicher scheinen, dass dies eine reine Python-Frage ist, aber bisher darauf verzichtet hat, darauf hinzuweisen, was es ist.
Luís de Sousa
6
Es ist eine Python- und GDAL-Frage und ich denke über das Thema nach
Ian Turton
3
Dies wurde cross-posted: stackoverflow.com/questions/36471683/…
Evil Genius
1
@EvilGenius Normalerweise stimme ich Cross-Postings ab, aber in diesem Fall kann ich das gutheißen, weil die ursprüngliche enge Abstimmung über die hier gestellte Frage darauf hinwies, dass dies der richtige Weg war.
PolyGeo

Antworten:

3

Vor der Installation der GDAL-Python-Bindung müssen Sie GDAL auf Ihrem System installieren.

apt-get install -y libgdal-dev

Danach setzen Sie Variablen und installieren die Bindung

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

Die Version des System-GDAL sollte höher sein als die Versionsbindungen.

Winsent
quelle