Installation von GEOS, PROJ, GDAL / OGR in einer Python Virtualenv unter Mac OS X

12

Ich versuche, ein isoliertes Python-Virtualenv für die Arbeit mit GIS-Projekten auf meinem Mac OS X einzurichten. Klingt so, als müsste ich GEOS, PROJ, GDAL / OGR von der Kyngchaos-Site hier installieren: http://www.kyngchaos.com/ software / frameworks und nicht easy_install in meine virtualenv. Ist das genau

Die auf kyngchaos verfügbaren Downloads sind pkg-Installer und nicht nur ein Ei oder eine Liste von Python-Modulen. Daher bin ich mir nicht sicher, was das Installationsprogramm sonst noch für die Umgebung tut, als nur Dateien in einen /Library/Framework/geos.frameworkOrdner zu kopieren .

Wie kann ich eine bestimmte Version von GEOS, PROJ, GDAL / OGR in meinem neuen Python-Virtualenv installieren? Ich würde mich über Ihre Hilfe / Vorschläge zu diesem Thema freuen.

Vish
quelle

Antworten:

4

Wenn sich jedes Framework von Kyngchaos im PATH befindet, ist es einfach. Jedes Framework hat einen Unix-Ordner mit den Bibliotheken zum Kompilieren von Dingen wie Pyproj oder Geos Python, wo immer Sie wollen, auch in einer privaten Python-Umgebung (ich hatte noch nie ein Problem).

Das einzige Problem ist, dass sich Gdal-Python im Gdal-Framework befindet. Aber in Site-Paketen gibt es eine Datei gdal.pth

gdal.pth Datei:

import sys; sys.path.insert(0,'/Library/Frameworks/GDAL.framework/Versions/1.7/Python/site-packages')

Wenn Sie es nicht selbst kompilieren möchten, kopieren Sie diese Datei in Ihre isolierte virtuelle Python-Umgebung


quelle
Nachdem ich diese Projekte von Hand, durch Installateure von Drittanbietern (fink / macports / whatever) und auf andere Weise installiert habe, garantiere ich Ihnen, dass der beste Weg durch Kynchaos führt! +1000
Ragi Yaser Burhum
@ Ragi Yaser Burhum - Ich fange an, dir zuzustimmen! Ich habe versucht, mithilfe von Fink die erforderlichen Abhängigkeiten zu installieren, um Cartopy in Python auszuführen. Ich erhalte folgende Meldung: "OSError: lib geos_c konnte nicht gefunden oder eine seiner Varianten geladen werden", obwohl libgeos_c.dylib sich unter /sw/opt/libgeos3.6.1/lib befindet und ich diesen Pfad zu .bash_profile hinzugefügt habe. Ich nehme an, Sie haben keine Weisheitsperlen, die auf Ihren Erfahrungen mit Fink beruhen?
user1718097
@use verwenden Homebrew :)
Ragi Yaser Burhum
@
RagiYaserBurhum
3

Mit Virtualenv können Sie eine private Python- Umgebung bereitstellen, sie erstreckt sich jedoch nicht auf Systembibliotheken außerhalb des Python-Universums. Die drei Pakete, die Sie erwähnt haben, sind alle C / C ++ - Anwendungen in ihrem Kern. Sie verfügen also über Schnittstellen zur Verwendung mit Python. Sie können jedoch nicht gepackt werden, ohne mit den C-Bibliotheken zu interagieren (libc on up).

Aufgrund der Schwierigkeit, diese Pakete von Grund auf neu zu installieren, insbesondere unter OS X, sollten Sie darüber nachdenken, eine virtuelle Sandbox-Maschine mit etwas wie VirtualBox auszuführen und die Pakete über apt auf dieser Sandbox-Maschine zu installieren OS X ist die Mühe wahrscheinlich nicht wert.

scw
quelle
Dies ist eine gute Empfehlung. Ich bin diesem Ansatz mit Fusion gefolgt, nicht mit VirtualBox, aber ich könnte es beim nächsten Mal mit Virtual Box versuchen. Ich habe CentOS für das Betriebssystem in der Box verwendet. (Nicht die beste Wahl des Betriebssystems aufgrund der stabilen Natur und älteren Versionen von Python usw.)
DavidF
3

Wenn Sie OSX verwenden müssen, können Sie die Komplexität der Installation durch die Installation von Homebrew auf einfache Weise vermeiden !

Danach müssen Sie nur noch folgende Befehle eingeben:

brew install gdal

Es werden automatisch auch Proj und Geos installiert, da es sich um GDAL-Abhängigkeiten handelt.

tommasop
quelle
3
Ich glaube nicht, dass dies das Problem des Zugriffs auf GDAL aus einer virtuellen Umgebung anspricht (ich habe es versucht und es hat nicht funktioniert)
DJQ
1
Sie verwenden können , brew install gdalsolange Sie Ihre Venv mit dem --system-site-packages - Flag erstellen, siehe meine Antwort hier gis.stackexchange.com/a/345248/155269
88jayto
1

Ich habe einen guten Blog-Beitrag gefunden, der eine andere Lösung bietet, die in meinem Fall funktioniert hat:

http://linfiniti.com/2013/02/installing-python-gdal-into-a-python-virtualenv-in-osx/

Der einzige Unterschied zum Blog-Post ist, dass ich die richtige Version von GDAL herunterladen musste, die zu den Kyngchaos-Paketen passte. In meinem Fall habe ich die GDAL-Framework-Version 1.10 verwendet, sodass die folgende Installation erfolgreich war

source venv/bin/activate
pip install --no-install GDAL==1.10.0
cd venv/build/GDAL
python setup.py build_ext\
    --gdal-config=/Library/Frameworks/GDAL.framework/Versions/1.10/unix/bin/gdal-config\
    --library-dirs=/Library/Frameworks/GDAL.framework/Versions/1.10/unix/lib/\
    --include-dirs=/Library/Frameworks/GDAL.framework/Versions/1.10/Headers/

Verlassen Sie dann das GDAL-Verzeichnis und installieren Sie ohne Download

cd ~
pip install --no-download GDAL

UPDATE: Möglicherweise müssen Sie einige env-Variablen hinzufügen, bevor Sie setup.py aufrufen, damit der Kompilierungsschritt funktioniert ( siehe diese Frage ).

export CFLAGS=-Qunused-arguments export CPPFLAGS=-Qunused-arguments
Yellowcap
quelle
0

Die obige Antwort von Yellowcap funktionierte für mich mit einigen kleinen Verbesserungen:

pip install - no-install ist keine Option mehr. Stattdessen im env-Verzeichnis:

pip download GDAL==1.11.2 (or whichever version you want)

Entpacke das heruntergeladene Verzeichnis und cd hinein:

tar -zxvf GDAL-1.11.2.tar.gz
cd GDAL-1.11.2

pip install - no-download ist auch keine option mehr. Bleiben Sie stattdessen im GDAL-Verzeichnis und führen Sie Folgendes aus:

python setup.py build
python setup.py install
Natalia Margolis
quelle
0

Das NextGIS-Installationsprogramm hat gdal, geos, proj usw. und Python-Bindungen (Python 2.7) für gdal isoliert. Installation in Systembibliotheken nicht betroffen (nur mehrere Umgebungsvariablen in bash_profile).

Dmitry Baryshnikov
quelle