2016-04-07 9 views
1

Ich versuche, ein Python-Skript für PyPI, die GDAL verwendet. Ich begann eine direkte Referenz in meinem setup.py einschließlich:Wie GDAL als eine Abhängigkeit zu einem Python-Paket hinzufügen

install_requires=['GDAL==1.11.2'],

diese Weise wird das Paket in meinem Test virtuellen Umgebung zu installieren, schlug fehl:

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 versuchte es dann mit einem Verweis auf pygdal, da sie als virtualenv Version markiert:

install_requires=['pygdal'],

Auf diese Weise endet die Installation ohne Fehler (aber mit der üblichen Last von Kompilierungswarnungen). Wenn jedoch dann ich das Skript aufrufen, bekomme 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 GDAL als Abhängigkeit der Einstellung?

Antwort

0

Nach verschiedenen Tests kam ich zu dem Schluss, dass dies ein Problem mit dem pygdal Paket selbst ist. Die Abhängigkeit wird korrekt deklariert, aber pip kann entweder nicht installiert oder kompiliert werden. Ich habe versucht, pygdal direkt mit pip auf einem Lager Ubuntu 14.04 System und it fails zu installieren. Es gibt noch kein Python-Rad für GDAL/OGR, das dieses Problem erklären könnte. Weitere Informationen finden Sie unter this discussion.

Die Strategie, die ich jetzt anwende, besteht darin, die Abhängigkeiten einfach dem Benutzer zu überlassen. Im Quellcode, so etwas wie dies dem Benutzer helfen kann:

try: 
    from osgeo import ogr 
except ImportError: 
    raise (""" ERROR: Could not find the GDAL/OGR Python library bindings. 
       On Debian based systems you can install it with this command: 
       apt install python-gdal""") 

Wenn das Zielsystem ein Paket-Management-Mechanismus verwendet (z apt, yum) kann man es statt pipy verwenden GDAL abhängige Programme zu verteilen.