Ich habe diese Frage zu Stack Overflow gestellt, bevor mir klar wurde, dass diese Site existiert. Da diese Seite passender ist, werde ich sie auch hier fragen.
Ich versuche, gdal von pip pip install gdal
in einer virtuellen Umgebung (Ubuntu) zu installieren . Es schlägt fehl, weil es nicht finden kanncpl_port.h
extensions/gdal_wrap.cpp:2853:22: fatal error: cpl_port.h: No such file or directory
compilation terminated
GDAL ist jedoch korrekt installiert und die Header-Datei befindet sich unter /usr/include/gdal/cpl_port.h
. Gibt es eine Umgebungsvariable für GDAL, die festgelegt werden muss, damit pip die Header-Dateien findet?
python
gdal
ubuntu
installation
Kevin
quelle
quelle
Antworten:
Die Antwort von selimnairb ist nah, aber Sie werden die Header nicht haben, es sei denn, Sie haben libgdal-dev installiert:
mit dem getan,
und dann
Die Zusammenstellung lief bis zum Abschluss und ich habe GDAL in meiner virtuellen Umgebung. Puh!
(edit 2018) Hinweis: Um sicherzustellen, dass Sie die richtige Version installieren und Probleme vermeiden. Rufen Sie die Version mit
gdal-config --version
. und dann:quelle
$ pip install GDAL==10.0
pip install GDAL==1.10.0
.Die Header-Dateien können aus irgendeinem Grund nicht gefunden werden. Vielleicht arbeiten Sie in einer virtuellen Umgebung oder sie befinden sich aus irgendeinem Grund nicht dort, wo sie sein sollten. In jedem Fall können Sie die Include-Verzeichnisse bei der Installation von gdal via pip angeben.
lade zuerst pythons gdal herunter:
in späteren Versionen von pip (> = 9.0.0)
pip install --no-install
gibt es nicht:Geben Sie dann an, wo sich die Überschriften befinden:
dann installiere es:
in späteren Versionen von pip (> = 9.0.0)
pip install --no-download
gibt es nicht:Hier ist eine andere Möglichkeit, gdal python zu installieren:
danach offene IDLE:
und du bist gut zu gehen!
quelle
gdal-config --libs -> -L/usr/lib -lgdal
pip install --no-install GDAL
erhalte ich die Fehlermeldung:__main__.gdal_config_error: [Errno 2] No such file or directory
Irgendeine Idee?brew install gdal
und eine ältere Version des GDAL-Python-Pakets verwendet:pip install --global-option=build_ext --global-option="-L/usr/local/include/gdal/" 'gdal==1.9.1'
Nachdem ich einer Untergruppe dieser Ratschläge gefolgt war, habe ich Python GDAL 1.11.0 (die Lösung sollte versionsunabhängig sein, siehe unten) installiert, um unter Ubuntu 14.04 mit pip zu funktionieren:
Abhängigkeiten installieren:
Die Pip-Installation erfolgt über den Include-Pfad (Präfix
sudo
für die systemweite Installation) und weist pip an, die Version zu installieren, die der auf dem System installierten GDAL-Version entspricht:quelle
sudo pip install --no-use-wheel -r python_requirements.txt --global-option=build_ext --global-option="-I/usr/include/gdal"
python_requirements.txt spezifiziert eine ältere Version von gdal. Ich bezweifle, dass es wichtig wäre, ehrlich zu sein, aber das gesamte Pip-Installationsset wird erfolgreich abgeschlossen. U 12.04x64Installieren des Python-Pakets
gdal
in virualenv unter LinuxGDAL
Bietet ein nützliches Toolkit für GEO-bezogene Operationen. Die Installation auf virtualenv unter Linux ist jedoch keine triviale Aufgabe.Dieses Rezept beschreibt, wie das geht.
Bedarf
gdal
Python-Paket installiert werden ) in virtualenvInstallationsmethoden
Es gibt mehrere Installationsmethoden. Eine Kompilierung ist erforderlich und dauert einige Minuten länger.
Das andere verwendet Radpaket des
pygdal
Pakets und ist sehr schnell. Um das Radpaket zu erstellen, muss es auf jeden Fall einmal erstellt werden, und die Erstellung umfasst ohnehin den Kompilierungsschritt.Über
GDAL
Pakete und VersionenGDAL
ist eine allgemeine C (++) - basierte Bibliothek für GEO-bezogene Berechnungen.GDAL
Dienstprogramme können systemweit installiert werden, wodurch gemeinsam genutzte Bibliotheken verfügbar werden, das Python-Paket selbst wird jedoch nicht installiert.GDAL
Es gibt verschiedene Versionen und jede Linux-Distribution kann standardmäßig eine andere Version installieren.Das Python-Paket
gdal
muss kompiliert werden und ist auf Linux-basierten Systemen nicht einfach zu installieren, da nur wenige Umgebungsvariablen festgelegt werden müssen. Dies erschwert die Installation in virtualenv.Für jede
gdal
Version wird möglicherweise eine andere Version vonGDAL
vorausgesetzt, und die Installation schlägt fehl, wenn die erwartete Version nicht im System vorhanden ist.Python-Paket
pygdal
ist eine Alternative zu Pythongdal
, das genau dasselbe installiert wie Pythongdal
, aber viel virtueller ist.pygdal
kommt in Versionen, die verwandte Versionen widerspiegelnGDAL
.GDAL
Wenn Sie also Version 1.10.1 im System haben, müssen Siepygdal
Version 1.10.1 installieren .Python-Paket
gdal
(wie auchpygdal
) verwendet das Root-Python-Paket mit dem Namenosgeo
und einer Reihe von Submodulenosgeo.gdal
.Bei Bedarf können andere als die Standardversionen von
GDAL
installiert und verwendet werden. Dies liegt außerhalb des Umfangs dieser Beschreibung.Radpakete können übergreifend kompiliert werden, dies ist auch nicht im Umfang.
Installation
GDAL
im SystemDa es
pygdal
erforderlich ist, dassGDAL
gemeinsam genutzte Bibliotheken vorhanden sind, müssen diese zuerst installiert werden.Vorausgesetzt, dass
GDAL
noch nicht installiert ist,gdal-config
beschwert sich der Anruf und gibt Ihnen einen Hinweis, wie Sie nachverfolgen können:Folgen Sie dem Hinweis und installieren Sie ihn:
Jede Distribution kann eine andere Version von verwenden
GDAL
. Um herauszufinden, welche wir verwenden:Jetzt wissen Sie,
GDAL
ist installiert und die Version ist 1.10.1 (die Version kann variieren).Installation
pygdal
vom Quellpaket (Kompilierung erforderlich)Derzeit
pygdal
wird nur das tar.gz-Paket bereitgestellt, das Paketquellen enthält und kompiliert werden muss.Vorausgesetzt, die Version von
GDAL
ist1.10.1
und dass unser virtualenv bereits aktiviert ist:Es kann eine Weile dauern, bis der Vorgang abgeschlossen ist. Dies erfordert möglicherweise auch eine Kompilierung. Warte einfach.
Überprüfen Sie, ob es installiert ist:
Ab sofort können Sie das osgeo-Paket in Ihrem Python-Code genau so verwenden, wie Sie es mit dem
gdal
Python-Paket installieren würden .Radpaket erstellen für
pygdal
Beachten Sie, dass Radpakete für genau dieselbe Architektur erstellt werden müssen, und zwar für Folgendes:
In unserem Fall muss es auch mit der
GDAL
installierten Version übereinstimmen .Die folgenden Schritte können in virtualenv ausgeführt werden oder nicht, wie Sie möchten.
Stellen Sie zunächst sicher, dass das Radpaket installiert ist:
Vorausgesetzt, Sie haben
GDAL
installiert und es hat Version 1.10.1:und warten Sie, bis es abgeschlossen ist.
Danach finden Sie das Unterverzeichnis wheelhouse und es enthält Pakete mit der Erweiterung `whl`:
Von Radpaketen
pygdal
einbauenDie Installation von radformatierten Paketen ist viel schneller (eine Sekunde im Vergleich zu Minuten), da keine Kompilierung erforderlich ist.
Beachten Sie, dass das Verzeichnis mit den Wheel-Paketen einen beliebigen Namen haben kann. Wir verwenden nur den Namen Wheelhouse.
Aktivieren Sie zuerst virtualenv.
Stellen Sie sicher, dass Sie im Steuerhausverzeichnis beide erforderlichen Radpakete (für
pygdal
undnumpy
) haben.Stellen Sie sicher, dass
GDAL
installiert ist und die Version mit der Version von übereinstimmtpygdal
.Installieren
pygdal
von Rad - Paket:Das -f Steuerhaus muss auf das Verzeichnis mit den Whl-Dateien verweisen.
Es ist keine Installation erforderlich
numpy
, es wird automatisch installiert.quelle
pygdal
für den Sieg!! pypi : "Virtualenv und setuptools freundliche Version von Standard-GDAL-Python-Bindungen" <3Ja, die folgenden Schritte vor dem Ausführen von PIP scheinen zu funktionieren:
export CPLUS_INCLUDE_PATH = / usr / include / gdal
Exportieren Sie C_INCLUDE_PATH = / usr / include / gdal
quelle
Das Problem bei der Installation von gdal durch den Pip ist, dass nur die Bindings abgerufen werden und nicht die gesamte Bibliothek, sodass es schwierig werden kann. Eine Möglichkeit, dies zu lösen, besteht darin, den Befehl pip zum Herunterladen zu verwenden, aber nicht zu installieren. Dann optimieren Sie den Header-Speicherort aus der Konfigurationsdatei. Dann installierst du das. meh.
Ich hatte das gleiche Problem, stellte jedoch fest, dass das Schreiben eines Fabric-Skripts zum Neukompilieren von gdal und zum Generieren der Python-Bindungen weniger Zeit in Anspruch nehmen würde. Damit erhalten Sie sogar den Vorteil von filegdb. Mach weiter und benutze das, was ich geschrieben habe, oder optimiere es nach Herzenslust.
quelle
Eine Weile später wird der Include-Pfad bereitgestellt, ohne dass die Pip-Installation beendet werden muss: Der Include-Pfad kann mithilfe einer Umgebungsvariablen festgelegt werden.
Angenommen, die Header befinden sich in / usr / include / gdal
export CPLUS_INCLUDE_PATH=/usr/include/gdal
bevor pip läuft.
quelle
/usr/include/gdal
Nachdem ich nach einer Lösung gesucht habe, ist hier etwas, das für mich unter Ubuntu 14.04 funktioniert, auch innerhalb einer virtuellen Umgebung ohne Zugriff auf die Systempakete:
Abhängigkeiten installieren:
Setze die Compiler Flags:
Installieren Sie die Version, die den Systembibliotheken entspricht (zum Zeitpunkt des Schreibens verwendet Ubuntu Trusty die 1.10-Header):
quelle
Jetzt können Sie die virtualenv- und setuptools-freundliche Version der Standard-GDAL- Pythonbindungen pygdal verwenden .
quelle
Ich hatte ähnliche Probleme auf einem Mac. So habe ich es gelöst:
Zunächst richte ich mit virtualenv eine virtuelle Python 2.7-Umgebung ein. Die Python-Distribution wurde in einem Verzeichnis namens "env" installiert.
Ich habe dann fink verwendet, um gdal zu installieren
Ich habe auch gdal-dev installiert, aber dies ist möglicherweise nicht erforderlich, da es möglicherweise bereits mit gdal installiert wurde.
Ich habe die installierte Version überprüft mit:
Auf meiner Installation ergab sich das Ergebnis 1.11.1
Die fink-Installation von gdal installierte die Header-Datei cpl_port.h in / sw / include / gdal1. Überprüfen Sie Ihre eigene Installation. Ich habe dann eingegeben:
Das schien für mich zu funktionieren, aber ich habe die Installation noch nicht getestet.
quelle
Auf Fedora 24, dessen Repository GDAL 2.0.2 enthält, musste ich das Python-Paket folgendermaßen installieren:
quelle
Beim Versuch, die Python-GDAL-Bindungen auf einem Mac (OS 10.10.5) zu installieren, trat ein ähnlicher Fehler auf. Ich habe die Basis-GDAL-Software von http://www.kyngchaos.com/software/frameworks mithilfe des Downloads "Complete" installiert . Ich musste drei Umgebungsvariablen setzen.
export C_INCLUDE_PATH = / Library / Frameworks / GDAL.framework / Header export CPLUS_INCLUDE_PATH = / Library / Frameworks / GDAL.framework / Header export LIBRARY_PATH = / Library / Frameworks / GDAL.framework / Versions / Current / unix / lib
Das letzte Stück war, /Library/Frameworks/GDAL.framework/Programs zu meinem PATH hinzuzufügen.
echo 'export PATH = / Library / Frameworks / GDAL.framework / Programs: $ PATH' >> ~ / .bash_profile
Danach konnte pip GDAL für Python installieren. Hoffe das hilft.
quelle
Diese gdal-Pakete 0.10.1 funktionieren gut für Ubuntu 12.04: https://launchpad.net/~ubuntugis/+archive/ubuntu/ubuntugis-unstable/+sourcepub/4353415/+listing-archive-extra
gdal-Pakete 0.10.1 für andere Ubuntu-Versionen: https://launchpad.net/~ubuntugis/+archive/ubuntu/ubuntugis-unstable/+packages?field.name_filter=gdal&field.status_filter=published&field.series_filter=
quelle
gdal 1.10.1
und habe gerade folgendes gemachtpip install --global-option=build_ext --global-option="-I/usr/include/gdal" gdal==1.10.0
So beantworten Sie den virtualenv-spezifischen Aspekt der Frage:
Beachten Sie, dass
pygdal
möglicherweise eine andere Version von GDAL erforderlich ist als imGDAL
Paket der Python-Bindungen.Nachfolgend finden Sie die Informationen, die ich für die neuesten Fedora-Versionen (20 und 23) verwendet habe.
quelle
Installation über Pip mit einem einzigen Befehl
Vorausgesetzt, das GDAL-Entwicklungspaket ist installiert und die Header-Dateiversionen sind korrekt, ist der einzige Befehl zum Installieren von GDAL von PyPI-Repos wie folgt:
Dies setzt natürlich voraus, dass der Speicherort der Header-Dateien ist
/usr/include/gdal
.Installieren Sie die aktuelle GDAL
Um GDAL mit dem obigen Befehl pip zu installieren, muss die Version der Header-Dateien der Version entsprechen, mit der pip den Build ausführt. GDAL hat eine aktualisierte Binärreferenz unter: https://trac.osgeo.org/gdal/wiki/DownloadingGdalBinaries .
So installieren Sie unter OpenSUSE
Unter dem obigen Link befindet sich eine URL, die weiter unten eingebettet ist und einen aktuellen Satz von GIS-Paketen für OpenSUSE 42.1 enthält. Http://download.opensuse.org/repositories/Application:/Geo/openSUSE_Leap_42.1/Application: Geo.repo
Ersetzen Sie durch die entsprechende Verpackung. Und wenn nicht,
zypper
gibt es weitere Informationen unter https://trac.osgeo.org/gdal/wiki/DownloadingGdalBinariesquelle
Ich hatte das gleiche Problem unter Windows 10. Nach einigen Experimenten kam ich mit dieser Lösung.
PYTHONPATH=c:\python36
PATH=C:\python36\Scripts\;C:\python36\;%PATH%
pip install *.whl
(* .whl von Schritt 2)quelle
Wenn Sie Docker verwenden, verwenden wir unseren Container als Open-Source-Version, was die Verwendung von GDAL und Python 3 vereinfacht. Der Container erfasst die oben beschriebenen Schritte, damit Sie GDAL schnell mit Ihren Apps verwenden können.
thinkwhere / gdal-python
quelle
Wenn Sie eine Debian-basierte Distribution ausführen, sind die GDAL-Python-Bibliotheken über Ihren Paketmanager verfügbar und können einfach mit installiert werden
sudo apt install python-gdal
odersudo apt install python3-gdal
quelle
Auf Ubuntu 16.04 mit Conda im Docker Container (Jupyter Stack)
quelle
In Ubuntu eine einfachere Lösung, um das neueste GDAL für Python3 zu installieren: Installieren von Bibliotheksdateien über
libgdal-dev
und Python-Wrapper überpython-gdal
für python2:
quelle
Möglicherweise treten auch Probleme mit der Speichernutzung auf.
Wenn
pip install gdal==2.2.3
gcc ausgeführt wird, wird es gestartet, um etwas zu kompilieren, und es erhöht die Speichernutzung.Wenn Sie nicht genügend Speicher haben, schlägt der Compiler mit einer Meldung wie fehl
Um das Problem zu beheben, müssen Sie mehr RAM hinzufügen oder einige freigeben.
quelle
Dieser Ansatz hat bei mir funktioniert:
Oder als Teil einer Dockerfile:
quelle
Wenn Sie Travis CI verwenden und eine aktuelle Version von GDAL für Python benötigen, sehen Sie hier ein Beispiel dafür, wie ein Teil einer
.travis.yml
Datei aussehen würde:quelle