installazione di GEOS, PROJ, GDAL / OGR in un python virtualenv su Mac OS X.


12

Sto cercando di configurare un virtual python isolato per lavorare su progetti GIS sul mio Mac OS X. Sembra che dovrò installare GEOS, PROJ, GDAL / OGR dal sito di kyngchaos qui http://www.kyngchaos.com/ software / framework e non facile_installarlo nel mio virtualenv. È preciso?

I download disponibili su kyngchaos sono programmi di installazione pkg e non solo un uovo o un bdist di moduli Python. Quindi, non sono molto sicuro di ciò che il programma di installazione sta facendo nell'ambiente oltre a copiare i file nella /Library/Framework/geos.frameworkcartella.

Come farei per installare una versione specifica di GEOS, PROJ, GDAL / OGR nel mio nuovo python virtualenv? Gradirei il vostro aiuto / suggerimenti su questo problema.

Risposte:


4

Se ogni Framework di Kyngchaos è nel PERCORSO, è facile. Ogni framework ha una cartella Unix, con le librerie per compilare cose come pyproj o geos python dove vuoi, anche in un ambiente Python privato (non ho mai avuto problemi)

L'unico problema è che Gdal Python è nel Gdal Framework. Ma nei pacchetti del sito c'è un file gdal.pth

file gdal.pth:

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

se non vuoi compilarlo da solo, copia questo file nel tuo virtualenv python isolato


avendo installato questi progetti a mano, tramite installatori di terze parti (fink / macports / qualunque cosa) e con altri mezzi ti garantirò che il modo migliore è attraverso Kynchaos! +1000
Ragi Yaser Burhum,

@Ragi Yaser Burhum - Sto iniziando ad essere d'accordo con te! Ho provato a usare Fink per installare le dipendenze necessarie per eseguire Cartopy in Python. Sto ottenendo: "OSError: Impossibile trovare lib geos_c o caricare nessuna delle sue varianti" anche se libgeos_c.dylib è in /sw/opt/libgeos3.6.1/lib e ho aggiunto quel percorso a .bash_profile. Suppongo che tu non abbia perle di saggezza basate sulle tue esperienze con il fink?
user1718097

@use use Homebrew :)
Ragi Yaser Burhum,

@RagiYaserBurhum ;-)
user1718097


3

Virtualenv consente di eseguire il provisioning di un ambiente Python privato , ma non si estende alle librerie di sistema al di fuori dell'universo Python. I tre pacchetti che hai citato sono tutte le applicazioni C / C ++ nel loro nucleo, quindi mentre hanno interfacce per l'uso con Python, non possono essere impacchettati senza interagire con le librerie C (libc on up).

A causa della difficoltà di installare quei pacchetti da zero, in particolare su OS X, potresti voler pensare di eseguire una macchina virtuale sandbox utilizzando qualcosa come VirtualBox e installare i pacchetti tramite apt su quella macchina sandbox: mentre è possibile fare lo stesso su OS X, probabilmente non vale la pena.


Questa è una buona raccomandazione Ho seguito questo approccio usando Fusion, non VirtualBox, ma potrei provare Virtual Box la prossima volta. Ho usato CentOS per il sistema operativo nella confezione. (Non è la migliore scelta del sistema operativo a causa della natura stabile e delle versioni precedenti di Python, ecc.)
DavidF

3

Se è necessario utilizzare OSX, è possibile evitare facilmente le complessità di installazione installando homebrew !

Dopodiché gli unici comandi che dovrai inserire sono:

brew install gdal

Installerà automaticamente anche proj e geos perché sono dipendenze gdal.


3
Non credo che questo affronti il ​​problema dell'accesso a gdal da un virtualenv (l'ho provato e non ha funzionato)
djq,

1
puoi usarlo brew install gdalfintanto che crei il tuo venv con la bandiera --system-site-pacchetti, vedi la mia risposta qui gis.stackexchange.com/a/345248/155269
88jayto

1

Ho trovato un buon post sul blog che fornisce un'altra soluzione che ha funzionato nel mio caso:

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

L'unica differenza rispetto al post sul blog è che dovevo fare è scaricare la versione corretta di GDAL che corrispondeva ai pacchetti kyngchaos. Nel mio caso stavo usando la versione 1.10 del framework GDAL, quindi la seguente installazione è andata a buon fine

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/

Quindi lasciare la directory GDAL e installarlo senza scaricare

cd ~
pip install --no-download GDAL

AGGIORNAMENTO: Potrebbe essere necessario aggiungere alcune variabili env prima di chiamare setup.py affinché la fase di compilazione funzioni ( vedere questa domanda )

export CFLAGS=-Qunused-arguments export CPPFLAGS=-Qunused-arguments

0

La risposta di Yellowcap sopra ha funzionato per me con alcune piccole modifiche:

pip install --no-install non è più un'opzione. Invece, all'interno della directory env:

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

Decomprimi la directory scaricata e cd in essa:

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

pip install --no-download non è più un'opzione. Rimani invece nella directory GDAL ed esegui:

python setup.py build
python setup.py install

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.