Python GDAL paketi pip aracılığıyla yüklerken başlık dosyası eksik


68

Bu sitenin var olduğunu fark etmeden önce bu soruyu Stack Overflow'ta sordum . Bu site daha uygun olduğu için burada da soracağım.

Pip'i pip install gdalsanal bir ortamda (Ubuntu) içine pip üzerinden kurmaya çalışıyorum . Başarısız çünkü bulamıyorcpl_port.h

extensions/gdal_wrap.cpp:2853:22: fatal error: cpl_port.h: No such file or directory
compilation terminated

Ancak GDAL doğru bir şekilde kurulur ve başlık dosyası bulunur /usr/include/gdal/cpl_port.h. Pip'in başlık dosyalarını bulması için GDAL için ayarlanması gereken bir ortam değişkeni var mı?


Windows'ta benzer bir sorun var, sanal env'de pip üzerinden gdal yükleme. ! [buraya görüntü açıklamasını girin ] ( i.stack.imgur.com/EVLWP.jpg )
Hayat Khan

Yanıtlar:


94

selimnairb'ın cevabı yakın, ancak libgdal-dev kurmazsanız başlıklara sahip olmayacaksınız:

sudo apt-get install libgdal-dev

bununla

export CPLUS_INCLUDE_PATH=/usr/include/gdal

export C_INCLUDE_PATH=/usr/include/gdal

ve sonra

pip install GDAL

Derleme tamamlandı ve sanal ortamımda GDAL var. Uf!

(düzenleme 2018) Not: Doğru sürümü yüklediğinizden ve herhangi bir problemden kaçındığınızdan emin olmak için. ile sürümü al gdal-config --version. ve sonra:

pip install GDAL==version

İşe yarayan tek çözüm gibi görünüyor.
bozdoz

1
Bunu başka bir sistemde denedim ve bence bu artı @ nickves cevabının birleşimi aslında yapan şeydir.
bozdoz

Bu benim için çalıştı.
jaranda

1
Çok iyi. GDAL’ın sisteme ve python paketine kurulu versiyonlarının farklı olması durumunda başarısız olur. Çözüm, sistemde GDAL sürümünü bulmak ve pipe ilgili python paketi sürümünü yüklemesini bildirmektir. Benim durumumda (Ubuntu 14.04) ikisi de 10.0, bu yüzden yardımcı oldu$ pip install GDAL==10.0
Jan Vlcinsky

4
Bunun Ubuntu 16.04 ile çalıştığını onaylayabilirim pip install GDAL==1.10.0.
beruic

34

Başlık dosyaları nedense bulunamıyor. Belki bir Sanal Ortam içinde faaliyet gösteriyorsunuzdur ya da bir nedenden dolayı olması gerektiği yerde değiller. Her durumda, gdal pip ile yüklenirken içerme direklerini belirleyebilirsiniz.

ilk indir python's gdal:

pip install --no-install GDAL

pip sonraki sürümlerinde (> = 9.0.0) pip install --no-installmevcut değil:

pip download GDAL

sonra başlıkların nerede olduğunu belirtin:

python setup.py build_ext --include-dirs=/usr/include/gdal/

sonra kurun:

pip install --no-download GDAL

pip sonraki sürümlerinde (> = 9.0.0) pip install --no-downloadmevcut değil:

sudo python setup.py install --include-dirs=/usr/include/gdal

İşte gdal python'u kurmanın başka bir yolu:

$ sudo apt-add-repository ppa:ubuntugis/ubuntugis-unstable
$ sudo apt-get update
$ sudo apt-get install python-gdal

bu açık IDLE’den sonra:

from osgeo import gdal

ve gitmekte iyisin!


3
Merhaba, yanıtınız için teşekkürler, ancak CI işlemi sırasında sanalenv kullanarak izole edilmiş ortamlar oluşturacağım için pip yoluyla yüklemek için bir yola ihtiyacım var.
kevin,

1
'gdal-config --version' ve 'gdal-config --libs' komutunu çalıştırdığınızda çıktı nedir?
Temmuz’da 9:12

GDAL v1.9.1. gdal-config --libs -> -L/usr/lib -lgdal
kevin,

2
@ nickves Ubuntu'da virtualenvwrapper kullanarak GDAL yüklemeye çalışıyorum ve ilk satırınızı denediğimde:, pip install --no-install GDALhatayı alıyorum: __main__.gdal_config_error: [Errno 2] No such file or directoryHerhangi bir fikir?
JollySin

3
Geçenlerde GDAL’i OSX’e yüklemek için harika bir zaman geçirdim. Şu anda, GDAL için en son Python bağları 2.1'e bağlıdır, ancak homebrew'de mevcut olan en son GDAL, GDAL Complete için 1.11.3 ve 1.11.4'tür. Homebrew aracılığıyla yükledim brew install gdalve GDAL Python paketinin eski bir sürümünü kullandım:pip install --global-option=build_ext --global-option="-L/usr/local/include/gdal/" 'gdal==1.9.1'
TestSubject

17

Bu tavsiyenin bir alt setini takip ettikten sonra, Python GDAL 1.11.0 (çözüm sürümden bağımsız olmalıdır, aşağıya bakınız) kurulumunu pip ile Ubuntu 14.04 üzerinde çalışmak için hazırladım:

Bağımlılıkları yükle:

sudo apt-get install libgdal-dev libgdal1h

pip yükleme yolu boyunca ( sudosistem genelinde yükleme için önek) geçerek ve pipin sisteme kurulan GDAL sürümüne uyan sürümü yüklemesini söyleyerek pip kurulumunu yapın:

pip install --global-option=build_ext --global-option="-I/usr/include/gdal" GDAL==\`gdal-config --version\`

Selimnairb ve Paul Whipp'in yüksek puanlı cevapları benim için Ubuntu 15.10'da işe yaramadı ve bu yaptı.
rhunwicks 17:15

1
İkinci satır @ nickves'ın cevabındaki dengesiz havuzları eklemenin ardından benim için çalıştı. Herkese teşekkürler!
Patrick Williams

1
Teşekkürler, bu benim için çalışmaya başladı. Kartodb kurulumuna olabildiğince sıkı sıkıya bağlı kalmaya çalıştığımda biraz değişiklik yapmam gerektiğine rağmen, bunu nihai çalışma kurulum sudo pip install --no-use-wheel -r python_requirements.txt --global-option=build_ext --global-option="-I/usr/include/gdal" komutum olarak kullandım: python_requirements.txt daha eski bir versiyonunu belirtir. Dürüst olmanın önemli olacağından şüpheliyim, ancak pip kurulum setinin tamamı başarıyla tamamlandı. U 12.04x64
vaxhax

12

Python paketini gdalLinux'ta virualenv'e kurmak

GDALGEO ile ilgili işlemler için güzel bir araç seti sunar. Ancak, Linux'ta virtualenv'e kurmak önemsiz bir iş değildir.

Bu tarifte bunun nasıl yapılacağı açıklanmaktadır.

Not

Burada gdalPython paketi için küçük harf ve GDALgenel sistem genelinde kütüphane için büyük harf kullanıyorum .

Gereksinimler

  • osgeo kütüphanelerinin ( gdalPython paketi ile kurulmuş) virtualenv'de kullanılmasına izin ver
  • Linux Ubuntu'da kuruluma izin ver

Kurulum yöntemleri

Kurulum için birden fazla yöntem vardır. Biri derleme gerektirir ve birkaç dakika daha sürer.

Diğeri paketin tekerlek paketini kullanıyor pygdalve çok hızlı. Yine de, tekerlek paketini oluşturmak için bir kez bir tane yaratılması gerekir ve oluşturma yine de derleme adımını içerir.

Hakkında GDALpaketler içinde

GDAL GEO ile ilgili hesaplamalar için genel C (++) tabanlı bir kütüphanedir.

GDAL paylaşılan kütüphaneleri kullanılabilir kılan, ancak Python paketinin kendisini yüklemeyen yardımcı programlar sisteme yüklenebilir.

GDAL farklı sürümlerde gelir ve her Linux dağıtımı varsayılan olarak farklı sürümü yükleyebilir.

Python paketi gdalderleme gerektiriyor ve Linux tabanlı sistemlere kurulması önemsiz değil, çünkü birkaç çevresel değişken ayarlanmasını bekliyor. Bu, sanalenv'e kurulumun daha zor olmasını sağlar.

Her gdalsürüm farklı bir sürüm alabilir GDALve beklenen sürüm sistemde mevcut değilse yükleme işlemi başarısız olur.

Python paketi tamamen aynı şeyleri yükleyen bir pygdalalternatiftir , fakat daha sanalenv dostu bir şekilde yapar.gdalgdal

pygdalilgili GDALsürümü yansıtan sürümlerde gelir . Bu yüzden GDAL sistemde pygdal1.10.1 sürümüne sahipseniz, sürüm 1.10.1'i yüklemelisiniz .

Python paketi gdal(hem de pygdal) osgeo, biri adı verilen ve alt modüller içeren root python paketini kullanır osgeo.gdal.

Gerekirse, varsayılan sürümleri dışında GDALkurulabilir ve kullanılabilir. Bu, bu tanımlamanın kapsamı dışındadır.

Tekerlek paketleri çapraz derlenebilir, bu da kapsam dışındadır.

GDALSisteme yükleme

As pygdalgerektirir GDALmevcut olması paylaşılan kütüphaneleri, öncelikle bunları yüklemeniz gerekir.

GDALHenüz kurulmadığı varsayılırsa , arama gdal-configsizi şikayet edecek ve size nasıl takip edileceğine dair bir ipucu verecektir:

$ gdal-config --version
The program 'gdal-config' is currently not installed. You can install it by typing:
sudo apt-get install libgdal-dev

İpucunu izleyin ve kurun:

$ sudo apt-get install libgdal-dev

Her dağıtım farklı versiyonunu kullanabilir GDAL. Hangisini kullandığımızı bulmak için:

$ gdal-config --version
1.10.1

Artık bildiğiniz, GDALyüklü ve sürüm 1.10.1 (sürüm değişebilir).

Yükleme pygdalkaynak paketinden (derleme gerektirir)

Şu anda pygdalsadece paket kaynaklarını içeren ve derleme gerektiren tar.gz paketinde sağlanmıştır.

, Sürümünü varsayarsak GDALIS 1.10.1ve Virtualenv zaten etkin olduğunu:

$ pip install pygdal==1.10.1

Tamamlanması biraz zaman alabilir, biraz derleme gerektirebilecek olan uyuşuk olması gerekir. Sadece bekle.

Kontrol edin, yüklü:

$ pip freeze|grep pygdal
pygdal==1.10.1.0

Şu andan itibaren, osgeo paketini Python kodunuzda, gdalPython paketiyle yükleyeceğiniz gibi kullanabilirsiniz .

İçin tekerlek paketi oluşturma pygdal

Unutmayın, tekerlek paketleri aynı mimari için yaratılmalıdır, yani eşleşmelidir:

  • CPU mimarisi
  • İşletim Sistemi (Linux / Windows)

Bizim durumumuzda, GDALyüklü olan sürümle de aynı olmalıdır .

İstediğiniz gibi sanalenvde aşağıdaki adımları takip edebilirsiniz.

İlk önce, tekerlek paketinin kurulu olduğundan emin olun:

$ pip install wheel

Varsayalım, GDALyüklediyseniz ve sürüm 1.10.1’e sahip:

$ pip wheel pygdal==1.10.1.0

ve tamamlanana kadar bekleyin.

Bundan sonra, alt dizin tekerlek yuvasını bulmalı ve `whl 'uzantılı paketleri içermelidir:

$ ls wheelhouse
numpy-1.9.1-cp27-none-linux_x86_64.whl
pygdal-1.10.1.0-cp27-none-linux_x86_64.whl

pygdalTekerlek paketlerinden yükleyin

Tekerlek formatlı paketlerden kurulum, derleme gerektirmediğinden çok daha hızlıdır (dakikalara kıyasla bir saniye).

Unutmayın, tekerlek paketleri içeren bu dizinin herhangi bir adı olabilir, yalnızca tekerlek yuvası adını kullanacağız.

Önce sanalenv'i etkinleştir.

Tekerlek evinde her iki gerekli tekerlek paketinin ( pygdalve için numpy) olduğundan emin olun .

Kurulduğundan GDALve sürümün sürümüyle eşleştiğinden emin olun pygdal.

pygdalTekerlek paketinden yükleyin :

$ pip install pygdal==1.10.1.0 -f wheelhouse

-F wheelhouse, whl dosyalarının bulunduğu dizine işaret edecektir.

Yüklemeye gerek yoktur numpy, otomatik olarak yüklenir.


Bu cevap, buradaki diğer harika cevaplara dayanıyor, sıkışıp kaldığım ayrıntılar için tam talimatlar vermeye çalışıyor ve tekrarlanan kurulumları sanalenv'e hızlandırmak için teker paketi formatını kullanmak için adımlar ekliyor.
Jan Vlcinsky

pygdalkazanmak için!! pypi : " Virtualenv ve setuptools standart GDAL piton bağlarının dostça sürümü" <3
gisdude

9

Evet, PIP'i çalıştırmadan önce aşağıdakileri yapmak çalışıyor gibi görünüyor:

ihracat CPLUS_INCLUDE_PATH = / usr / include / gdal

ihracat C_INCLUDE_PATH = / usr / include / gdal


6

Pip kurulum gdal ile ilgili sorun, tüm kitaplıkları değil sadece ciltleri almasıdır, bu yüzden zorlaşabilir. Bunu çözmenin bir yolu indirmek için pip komutunu kullanmaktır - ancak kurulmaz. Ardından, config dosyasından başlık konumunu çimdikleyin. Ardından pip kurun. meh.

Aynı problemi yaşıyordum ama gdal'ı yeniden derlemek ve piton bağlarını üretmek için bir kumaş senaryo yazmanın daha az zaman alacağını anladım . Bununla birlikte filegdb'nin avantajlarından bile yararlanabilirsiniz. Devam edin ve yazdığınız ya da kalp içeriğinize göre çimdiklediğiniz yazıyı kullanın.


3

Bir süre sonra bu, pip kurulumundan kurtulmak zorunda kalmadan dahil etme yolunu sağlar: Bir ortam değişkeni kullanarak dahil etme yolu ayarlanabilir.

Başlıkların / usr / include / gdal konumunda olduğunu varsayarsak,

export CPLUS_INCLUDE_PATH=/usr/include/gdal

pip çalıştırmadan önce.


Bunu kullanarak, "extensions / gdalconst_wrap.c: 2732: 18: ölümcül hata: gdal.h: böyle bir dosya ya da dizin yok" gdal.h içinde olsa bile/usr/include/gdal
anand.trex

1
C_INCLUDE_PATH yerine / ek olarak kullanmak = yardımcı olur mu?
Crischan

3

Bir çözüm için sağa ve sola baktıktan sonra, işte benim için Ubuntu 14.04'te, hatta sistem paketlerine erişimi olmayan bir sanalenv içinde bile çalışan bir şey var:

  • Bağımlılıkları yükle:

    sudo apt-get install libgdal-dev libgdal1h libgdal1-dev
  • Derleyici bayraklarını ayarlayın:

    export CFLAGS=$(gdal-config --cflags)
  • Sistem kütüphanelerine karşılık gelen sürümü kurun (Ubuntu Trusty yazarken, 1.10 başlıklarını kullanıyor):

    pip install GDAL==1.10.0

ayrıca benim için ubuntu'da çalıştı 16.04
Luke W


2

Mac'te de benzer problemler yaşıyordum. Bu nasıl çözdüm:

Öncelikle virtualenv kullanarak sanal bir Python 2.7 ortamı oluşturdum. Python dağılımı 'env' adlı bir dizine kuruldu.

Daha sonra gdal yüklemek için fink kullandım

fink selfupdate
fink update-all
fink install gdal

Ayrıca gdal-dev'i yükledim, ancak daha önceden gdal ile yüklenmiş olabileceği için bu gerekli olmayabilir.

Yüklenen sürümü kontrol ettim:

gdal-config --version

Kurulumumda 1.11.1 sonucunu verdi.

Gdal'ın fink kurulumu cpl_port.h başlık dosyasını / sw / include / gdal1 içine yükledi. Kendi kurulumunuzu kontrol edin. Sonra girdim:

export CPLUS_INCLUDE_PATH=/sw/include/gdal1
export C_INCLUDE_PATH=/sw/include/gdal1
env/bin/pip install pygdal==1.11.1

Bu benim için işe yarayacak gibiydi ama henüz kurulumu test etmedim.


2

Depolarında GDAL 2.0.2 olan Fedora 24'te, Python paketini şu şekilde kurmak zorunda kaldım:

pip install \
  --global-option=build_ext \
  --global-option="-I/usr/include/gdal/" \
  GDAL==2.0.1

2

Bir mac üzerine python GDAL bağlamalarını yüklemeye çalışırken de benzer bir hata ile karşılaşıyordum (OS 10.10.5). Temel GDAL yazılımını "Komple" indirmeyi kullanarak http://www.kyngchaos.com/software/frameworks adresinden yükledim . Üç çevre değişkeni ayarladım.

ihracat C_INCLUDE_PATH = / Kütüphane / Altyapılar / GDAL.framework / Başlıklar ihracat CPLUS_INCLUDE_PATH = / Kütüphane / Altyapılar / GDAL.framework / Başlıklar ihracat LIBRARY_PATH = / Kütüphane / Altyapılar / GDAL.framework / Sürümler / Mevcut / unix / lib

Son parça PATH'ime /Library/Frameworks/GDAL.framework/Programs eklemek oldu.

echo 'verme PATH = / Kütüphane / Altyapılar / GDAL.Çalışma / Programlar: $ PATH' >> ~ / .bash_profile

Bundan sonra pip, python için GDAL'ı kurabildi. Bu yardımcı olur umarım.


1

Ben de sorun yaşadım gdal 1.10.1, ve sadece aşağıdakini yaptımpip install --global-option=build_ext --global-option="-I/usr/include/gdal" gdal==1.10.0
ryanjdillon

1

Sorunun sanal alanına belirli bir soruyu cevaplamak için:

pip3 search gdal
GDAL                      - GDAL: Geospatial Data Abstraction Library
pygdal                    - Virtualenv and setuptools friendly version of
                            standard GDAL python bindings

Python bağları paketinin gerektirdiğine pygdalkıyasla, farklı bir GDAL sürümü gerektirebilecek dikkat edin GDAL.


Aşağıda Fedora’nın (20 ve 23) son sürümlerinde kullandığım şey.

CPPFLAGS=-I/usr/include/gdal pip install gdal

1

Tek Komutlu Pip Üzerinden Kurulum

GDAL geliştirme paketinin kurulu olduğu ve başlık dosya sürümlerinin doğru olduğu varsayılarak, GDAL'yi PyPI reposundan yüklemek için gereken tek komut aşağıdaki gibidir:

pip install --global-option=build_ext --global-option="-I/usr/include/gdal" gdal

Bu açıkça başlık dosyalarının yerini alır /usr/include/gdal.

Güncel GDAL’i Kur

GDAL'i yukarıdaki pip komutuyla kurmak için, başlık dosyalarının sürümünün pip'in yapacağı sürüme benzer olması gerekir. GDAL’in güncellenmiş bir ikili referansı vardır: https://trac.osgeo.org/gdal/wiki/DownloadingGdalBinaries .

OpenSUSE'ye Nasıl Kurulur

Yukarıdaki bağlantıyı izleyerek OpenSUSE 42.1 için güncel bir GIS paketi setine aşağıya gömülmüş bir URL var http://download.opensuse.org/repositories/Application:/Geo/openSUSE_Leap_42.1/Application: Geo.repo

zypper ar -f <URL>

Uygun paketle değiştirin. Ve eğer kullanmıyorsanız zypper, https://trac.osgeo.org/gdal/wiki/DownloadingGdalBinaries adresinde daha fazla bilgi bulunmaktadır.


1

Windows 10'da da aynı problem yaşadım. Bazı deneylerden sonra bu çözümle geldim.

  1. Ortam değişkenlerini değiştirdikten sonra Python 3.6'yı (yüklü değilse) indirin ve yükleyin PYTHONPATH=c:\python36 PATH=C:\python36\Scripts\;C:\python36\;%PATH%
  2. Doğru python sürümü için * .whl dosyasını https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal adresinden indirebilirsiniz.
  3. İndirin ve yükleyin http://landinghub.visualstudio.com/visual-cpp-build-tools
  4. pip install *.whl (*, 2. adımdaki .whl)

thnx, python'un ortamları otomatik olarak kurduğunu düşünmüştüm, ama sonra her şeyin bir cazibe gibi çalışmasını önerdiğin gibi ortamları kaldırdım ve yeniden yarattım.
Florjan

1

Docker kullanıyorsanız, GDAL ve Python 3 kullanımını basitleştiren, açık kaynaklı konteynerimiz açılır. Konteyner, GDAL'ı uygulamalarınızla hızlı bir şekilde kullanmanıza izin vermek için yukarıda belirtilen adımları uygulamaktadır.

thinkwhere / gdal-piton


0

Debian tabanlı bir dağıtım çalıştırıyorsanız, GDAL python kütüphaneleri paket yöneticiniz aracılığıyla edinilebilir ve kolayca kurulabilir.

sudo apt install python-gdal veya sudo apt install python3-gdal


0

Liman işçisi konteynerinde condalı 16.04 Ubuntu (jupyter yığını)

apt-get update
apt-get install libgdal1-dev -y
gdal-config --version
export CFLAGS=$(gdal-config --cflags)
pip install GDAL==1.11.2

0

Ubuntu'da python3 için en son nesneyi yüklemek için daha basit bir çözüm: kütüphane dosyalarını libgdal-devvepython-gdal

sudo apt-get install libgdal-dev
sudo apt-get install python3-gdal

python2 için:

sudo apt-get install python-gdal

0

Bellek kullanımıyla ilgili bir sorunla da karşılaşabilirsiniz.

pip install gdal==2.2.3Gcc çalışırken bir şeyi derlemek için başlatılır ve bellek kullanımını yükseltir.

Yeterli hafızanız yoksa, derleyici gibi bir mesajla başarısız olur.

'x86_64-linux-gnu-gcc' çıkış durumu 4 ile başarısız oldu

Bunu düzeltmek için daha fazla ram eklemeniz veya bazılarını serbest bırakmanız gerekir.


0

Bu yaklaşım benim için çalıştı:

sudo apt-get install libgdal-dev
export CPLUS_INCLUDE_PATH=/usr/include/gdal
export C_INCLUDE_PATH=/usr/include/gdal
pip3 install gdal==$(gdal-config --version)

Veya bir Docker dosyasının bir parçası olarak:

RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y \
                libgdal-dev \
                python3-pip
ARG CPLUS_INCLUDE_PATH=/usr/include/gdal
ARG C_INCLUDE_PATH=/usr/include/gdal
RUN pip3 install gdal==$(gdal-config --version)

0

Travis CI kullanıyorsanız ve Python için yeni bir GDAL sürümüne ihtiyacınız varsa , burada .travis.ymldosyanın nasıl bir parçası olacağına bir örnek verilmiştir :

language: python

env:
  global:
    - CPLUS_INCLUDE_PATH=/usr/include/gdal
    - C_INCLUDE_PATH=/usr/include/gdal

before_install:
  - sudo add-apt-repository -y ppa:ubuntugis/ppa
  - sudo apt-get -qq update
  - sudo apt-get -qq install libgdal-dev gdal-bin

install:
  - pip install gdal==`gdal-config --version`
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.