menginstal GEOS, PROJ, GDAL / OGR ke dalam virtualenv python di Mac OS X


12

Saya mencoba mengatur virtualenv python yang terisolasi untuk bekerja pada proyek GIS pada Mac OS X saya. Kedengarannya saya perlu menginstal GEOS, PROJ, GDAL / OGR dari situs kyngchaos di sini http://www.kyngchaos.com/ perangkat lunak / kerangka kerja dan bukan easy_install ke virtualenv saya. Apakah itu akurat?

Unduhan yang tersedia di kyngchaos adalah installer pkg dan bukan hanya telur atau bdist dari modul python. Jadi, saya tidak begitu yakin apa lagi yang dilakukan installer terhadap lingkungan selain hanya menyalin file ke /Library/Framework/geos.frameworkfolder.

Bagaimana cara saya menginstal versi GEOS, PROJ, GDAL / OGR ke dalam python virtualenv baru saya? Saya sangat menghargai bantuan / saran Anda tentang masalah ini.

Jawaban:


4

Jika setiap Kerangka Kyngchaos ada di PATH, itu mudah. Setiap kerangka kerja memiliki folder Unix, dengan perpustakaan untuk mengkompilasi hal-hal seperti pyproj atau geos python di mana pun Anda inginkan, bahkan di lingkungan Python pribadi (saya tidak pernah punya masalah)

Satu-satunya masalah adalah bahwa python Gdal ada di Gdal Framework. Tetapi dalam paket situs ada file gdal.pth

file gdal.pth:

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

jika Anda tidak ingin mengkompilasinya sendiri, salin file ini dalam virtualenv python terisolasi Anda


setelah menginstal proyek-proyek itu dengan tangan, melalui installer pihak ke-3 (fink / macports / apa pun) dan melalui cara lain saya akan menjamin kepada Anda bahwa cara terbaik adalah melalui Kynchaos! +1000
Ragi Yaser Burhum

@Ragi Yaser Burhum - Saya mulai setuju dengan Anda! Saya telah mencoba menggunakan Fink untuk menginstal dependensi yang diperlukan untuk menjalankan Cartopy dengan Python. Saya mendapatkan: "OSError: Tidak dapat menemukan lib geos_c atau memuat variannya" meskipun libgeos_c.dylib ada di /sw/opt/libgeos3.6.1/lib dan saya telah menambahkan path itu ke .bash_profile. Saya kira Anda tidak memiliki mutiara kebijaksanaan berdasarkan pengalaman Anda dengan fink?
user1718097

@menggunakan gunakan Homebrew :)
Ragi Yaser Burhum

@RagiYaserBurhum ;-)
user1718097


3

Virtualenv memungkinkan Anda untuk menyediakan lingkungan Python pribadi , tetapi tidak meluas ke pustaka sistem di luar semesta Python. Tiga paket yang Anda sebutkan adalah semua aplikasi C / C ++ pada intinya, jadi meskipun mereka memiliki antarmuka untuk digunakan dengan Python, mereka tidak dapat dikemas tanpa berinteraksi dengan pustaka C (libc on up).

Karena kesulitan menginstal paket-paket itu dari awal, terutama pada OS X, Anda mungkin ingin berpikir tentang menjalankan mesin virtual sandbox menggunakan sesuatu seperti VirtualBox dan menginstal paket melalui apt pada mesin sandbox itu: sementara dimungkinkan untuk melakukan hal yang sama pada OS X, mungkin tidak sepadan dengan usaha.


Ini rekomendasi yang bagus. Saya mengikuti pendekatan ini menggunakan Fusion, bukan VirtualBox, tapi saya mungkin akan mencoba Virtual Box lain kali. Saya menggunakan CentOS untuk OS di dalam kotak. (Bukan pilihan OS terbaik karena sifat stabil dan versi Python yang lebih lama, dll.)
DavidF

3

Jika Anda perlu menggunakan OSX, Anda dapat dengan mudah menghindari kompleksitas instalasi dengan menginstal homebrew !

Setelah ini, satu-satunya perintah yang perlu Anda masukkan adalah:

brew install gdal

Secara otomatis akan menginstal juga proj dan geos karena mereka adalah dependensi gdal.


3
Saya tidak percaya ini membahas masalah mengakses gdal dari dalam virtualenv (saya mencobanya dan tidak berhasil)
djq

1
Anda dapat menggunakan brew install gdalselama Anda membuat venv Anda dengan flag --system-site-paket, lihat jawaban saya di sini gis.stackexchange.com/a/345248/155269
88jayto

1

Saya menemukan posting blog yang bagus yang memberikan solusi lain yang berfungsi dalam kasus saya:

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

Satu-satunya perbedaan pada posting blog adalah yang harus saya lakukan adalah mengunduh versi GDAL yang benar yang cocok dengan paket kyngchaos. Dalam kasus saya, saya menggunakan kerangka kerja GDAL versi 1.10, jadi pemasangan berikut berhasil

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/

Kemudian tinggalkan direktori GDAL dan instal tanpa mengunduh

cd ~
pip install --no-download GDAL

UPDATE: Anda mungkin harus menambahkan beberapa env vars sebelum memanggil setup.py agar langkah kompilasi berhasil ( lihat pertanyaan ini )

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

0

Jawaban Yellowcap di atas bekerja untuk saya dengan beberapa perubahan kecil:

pip install --no-install tidak lagi menjadi pilihan. Sebagai gantinya, di dalam direktori env:

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

Buka zip direktori yang diunduh dan masukkan ke dalamnya:

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

instal pip --tidak ada unduhan juga bukan lagi pilihan. Alih-alih tinggal di direktori GDAL dan jalankan:

python setup.py build
python setup.py install

0

Installer NextGIS telah mengisolasi gdal, geos, proj, dll. Dan python bindings (Python 2.7) ke gdal. Instalasi tidak terpengaruh pada pustaka sistem (hanya beberapa variabel lingkungan di bash_profile).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.