instalando GEOS, PROJ, GDAL / OGR em um virtualenv python no Mac OS X

12

Estou tentando configurar um virtualenv python isolado para trabalhar em projetos GIS no meu Mac OS X. Parece que vou precisar instalar o GEOS, PROJ, GDAL / OGR no site kyngchaos aqui http://www.kyngchaos.com/ software / frameworks e não é fácil_instalá-lo no meu virtualenv. Isso é preciso?

Os downloads disponíveis no kyngchaos são instaladores do pkg e não apenas um ovo ou uma lista de módulos python. Portanto, não tenho muita certeza do que mais o instalador está fazendo no ambiente, além de apenas copiar os arquivos para a /Library/Framework/geos.frameworkpasta.

Como eu instalaria uma versão específica do GEOS, PROJ, GDAL / OGR no meu novo python virtualenv? Agradecemos a sua ajuda / sugestões sobre esta questão.

Vish
fonte

Respostas:

4

Se cada Framework do Kyngchaos estiver no PATH, é fácil. Todo framework possui uma pasta Unix, com as bibliotecas para compilar coisas como pyproj ou geos python onde você quiser, mesmo em um ambiente privado em Python (nunca tive um problema)

O único problema é que o python Gdal está no Framework Gdal. Mas nos pacotes do site existe um arquivo gdal.pth

arquivo gdal.pth:

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

se você não quiser compilá-lo, copie esse arquivo em seu python virtualenv isolado


fonte
tendo instalado esses projetos manualmente, através de instaladores de terceiros (fink / macports / qualquer que seja) e por outros meios, garanto que o melhor caminho é através do Kynchaos! +1000
Ragi Yaser Burhum
@Ragi Yaser Burhum - Estou começando a concordar com você! Eu tenho tentado usar o Fink para instalar dependências necessárias para executar o Cartopy em Python. Estou recebendo: "OSError: Não foi possível encontrar a lib geos_c ou carregar qualquer uma de suas variantes", apesar de a libgeos_c.dylib estar em /sw/opt/libgeos3.6.1/lib e adicionar esse caminho ao .bash_profile. Suponho que você não tenha nenhuma pérola de sabedoria com base em suas experiências com o fink?
User1718097
@use use Homebrew :)
Ragi Yaser Burhum
@RagiYaserBurhum ;-)
user1718097
3

O Virtualenv permite que você provisione um ambiente Python privado , mas não se estende às bibliotecas do sistema fora do universo Python. Os três pacotes que você mencionou são todos aplicativos C / C ++ em seu núcleo; portanto, embora tenham interfaces para uso com Python, eles não podem ser empacotados sem interagir com as bibliotecas C (libc on up).

Devido à dificuldade de instalar esses pacotes a partir do zero, principalmente no OS X, você pode pensar em executar uma máquina virtual em área restrita usando algo como o VirtualBox e instalar os pacotes através do apt nessa máquina em área restrita: enquanto é possível fazer o mesmo em OS X, provavelmente não vale a pena o esforço.

scw
fonte
Esta é uma boa recomendação. Eu segui essa abordagem usando o Fusion, não o VirtualBox, mas posso tentar o Virtual Box na próxima vez. Eu usei o CentOS para o sistema operacional na caixa. (Não a melhor opção OS devido à natureza estável e versões mais antigas do Python, etc.)
davidf
3

Se você precisar usar o OSX, poderá evitar facilmente as complexidades da instalação instalando o homebrew !

Depois disso, os únicos comandos que você precisará digitar são:

brew install gdal

Ele instalará automaticamente também proj e geos porque são dependências gdal.

tommasop
fonte
3
Eu não acredito que este aborda a questão do acesso gdal de dentro de um virtualenv (eu tentei e não funcionou)
DJQ
1
você pode usar brew install gdaldesde que crie seu venv com o sinalizador --system-site-packages, veja minha resposta aqui gis.stackexchange.com/a/345248/155269
88jayto
1

Encontrei um bom post no blog que fornece outra solução que funcionou no meu caso:

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

A única diferença para o post do blog é que eu precisava fazer o download da versão correta do GDAL que correspondesse aos pacotes kyngchaos. No meu caso, eu estava usando o framework GDAL versão 1.10, portanto, a instalação a seguir foi bem-sucedida

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/

Em seguida, deixe o diretório GDAL e instale sem download

cd ~
pip install --no-download GDAL

ATUALIZAÇÃO: Talvez você precise adicionar alguns env vars antes de chamar setup.py para que a etapa de compilação funcione ( consulte esta pergunta )

export CFLAGS=-Qunused-arguments export CPPFLAGS=-Qunused-arguments
yellowcap
fonte
0

A resposta de Yellowcap acima funcionou para mim com alguns pequenos ajustes:

pip install --no-install não é mais uma opção. Em vez disso, dentro do diretório env:

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

Descompacte o diretório baixado e o CD nele:

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

pip install --no-download também não é mais uma opção. Em vez disso, permaneça no diretório GDAL e execute:

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

O instalador do NextGIS isolou as ligações gdal, geos, proj, etc. e python (Python 2.7) para gdal. Instalação não afetada nas bibliotecas do sistema (apenas várias variáveis ​​de ambiente em bash_profile).

Dmitry Baryshnikov
fonte