pip를 통해 설치할 때 Python GDAL 패키지에 헤더 파일이 없습니다.


68

내가 물었다 스택 오버플로이 질문에 이 사이트가 존재 실현하기 전에. 이 사이트가 더 적합하므로 여기에서도 물어볼 것입니다.

pip install gdal가상 환경 (Ubuntu) 내부에 pip에서 gdal을 설치하려고합니다 . 찾을 수 없기 때문에 실패cpl_port.h

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

그러나 GDAL이 올바르게 설치되고 헤더 파일이에 있습니다 /usr/include/gdal/cpl_port.h. pip가 헤더 파일을 찾기 위해 설정해야 할 GDAL에 대한 환경 변수가 있습니까?


가상 환경에서 pip를 통해 gdal을 설치하는 Windows에서도 비슷한 문제가 있습니다. ! [여기서 화상 정보를 입력 (] i.stack.imgur.com/EVLWP.jpg을 )
하야트 칸에게

답변:


93

selimnairb의 대답은 가깝지만 libgdal-dev를 설치하지 않으면 헤더가 없습니다.

sudo apt-get install libgdal-dev

그 일로

export CPLUS_INCLUDE_PATH=/usr/include/gdal

export C_INCLUDE_PATH=/usr/include/gdal

그리고

pip install GDAL

컴파일이 완료되고 가상 환경에 GDAL이 있습니다. 휴!

(2018 편집) 참고 : 올바른 버전을 설치하고 문제를 방지하십시오. 로 버전을 검색하십시오 gdal-config --version. 그리고:

pip install GDAL==version

효과가있는 유일한 솔루션 인 것 같습니다.
bozdoz

1
이것을 다른 시스템에서 시험해 보았습니다.이 플러스 @nickves 답변의 조합은 실제로 그렇게하는 것입니다.
bozdoz

이것은 나를 위해 일했습니다.
jaranda

1
아주 좋아요 시스템과 Python 패키지에 설치된 GDAL 버전이 다른 경우 실패합니다. 해결책은 시스템에서 GDAL 버전을 찾아 관련 python 패키지 버전을 설치하도록 pip에 지시하는 것입니다. 내 경우 (Ubuntu 14.04)는 모두 10.0이므로 도움이되었습니다$ pip install GDAL==10.0
Jan Vlcinsky

4
나는 이것이 Ubuntu 16.04에서 작동한다는 것을 확인할 수 있습니다 pip install GDAL==1.10.0.
beruic

34

▼ 어떤 이유로 헤더 파일을 찾을 수 없습니다. 어쩌면 가상 환경 내부에서 작업 중이거나 어떤 이유로 든 가상 환경이 아닐 수도 있습니다. 어쨌든 pip를 통해 gdal을 설치할 때 include dirs를 지정할 수 있습니다.

python의 gdal을 먼저 다운로드하십시오.

pip install --no-install GDAL

이후 버전의 pip (> = 9.0.0) pip install --no-install에는 존재하지 않습니다.

pip download GDAL

그런 다음 헤더 위치를 지정하십시오.

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

그런 다음 설치하십시오.

pip install --no-download GDAL

이후 버전의 pip (> = 9.0.0) pip install --no-download에는 존재하지 않습니다.

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

gdal python을 설치하는 다른 방법이 있습니다 :

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

그 열린 유휴 후 :

from osgeo import gdal

그리고 당신은 잘 지내요!


3
안녕하세요. 감사합니다. CI 프로세스 중에 virtualenv를 사용하여 격리 된 환경을 만들 때 pip를 통해 설치할 수있는 방법이 정말로 필요합니다.
kevin

1
'gdal-config --version'및 'gdal-config --libs'를 실행할 때 출력은 무엇입니까?
nickves

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

2
@ nickves 우분투에서 virtualenvwrapper를 사용하여 GDAL을 설치하려고하는데 첫 번째 줄을 시도 할 때 pip install --no-install GDAL오류가 발생합니다 : __main__.gdal_config_error: [Errno 2] No such file or directory어떤 생각입니까?
theJollySin

3
나는 최근에 OSX에 GDAL을 설치하는 데 멋진 시간을 보냈습니다. 현재 GDAL의 최신 Python 바인딩은 2.1에 의존하지만 homebrew에서 사용 가능한 최신 GDAL은 1.11.3 및 GDAL Complete의 1.11.4입니다. 저는 homebrew를 통해 설치 brew install gdal했고 이전 버전의 GDAL Python 패키지를 사용했습니다.pip install --global-option=build_ext --global-option="-L/usr/local/include/gdal/" 'gdal==1.9.1'
TestSubject

17

이 조언의 하위 집합을 따른 후 pip로 Ubuntu 14.04에서 작동하도록 Python GDAL 1.11.0 (솔루션은 버전 독립적이어야 함, 아래 참조)을 얻었습니다.

종속성을 설치하십시오.

sudo apt-get install libgdal-dev libgdal1h

포함 경로 ( sudo시스템 전체 설치의 접두사 )를 따라 pip 설치하고 시스템에 설치된 GDAL 버전과 일치하는 버전을 설치하도록 pip에 지시합니다.

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

selimnairb와 Paul Whipp의 더 높은 등급의 답변은 Ubuntu 15.10에서 저에게 적합하지 않았습니다.
rhunwicks

1
두 번째 줄은 @nickves answer의 불안정한 저장소를 적절하게 추가 한 후 나를 위해 일했습니다. 모두 감사합니다!
Patrick Williams

1
고마워, 결국 나를 위해 일했다. cartodb 설치를 가능한 한 엄격하게 시도하면서 약간 수정해야했지만 최종 작업 설치 명령으로 이것을 사용했습니다. sudo pip install --no-use-wheel -r python_requirements.txt --global-option=build_ext --global-option="-I/usr/include/gdal" python_requirements.txt는 이전 버전의 gdal을 지정합니다. 나는 그것이 정직해야 할 것은 의심하지만 전체 pip 설치 세트는 성공적으로 완료됩니다. U 12.04x64
vaxhax

12

gdalLinux에서 virualenv에 Python 패키지 설치

GDALGEO 관련 작업을위한 유용한 툴킷을 제공합니다. 그러나 Linux에서 virtualenv에 설치하는 것은 쉬운 일이 아닙니다.

이 레시피는 그 방법을 설명합니다.

노트

여기서는 gdal파이썬 패키지 에는 소문자 를 사용 GDAL하고 일반적인 시스템 전체 라이브러리 에는 대문자 를 사용 합니다.

요구 사항

  • osgeo 라이브러리 ( gdalPython 패키지 를 통해 설치된 )를 virtualenv에 사용하도록 허용
  • Linux Ubuntu에 설치 허용

설치 방법

설치 방법에는 여러 가지가 있습니다. 컴파일이 필요하고 몇 분이 더 걸립니다.

다른 하나는 패키지의 휠 패키지를 pygdal사용하고 있으며 매우 빠릅니다. 어쨌든 휠 패키지를 만들려면 휠 패키지를 한 번 만들어야하며 생성에는 컴파일 단계가 포함됩니다.

소개 GDAL패키지와 버전

GDAL GEO 관련 계산을위한 일반 C (++) 기반 라이브러리입니다.

GDAL 유틸리티는 시스템 전체에 설치하여 공유 라이브러리를 사용할 수 있지만 Python 패키지 자체는 설치하지 않습니다.

GDAL 다른 버전으로 제공되며 각 Linux 배포판은 기본적으로 다른 버전을 설치할 수 있습니다.

파이썬 패키지 gdal는 컴파일이 필요하며 환경 변수가 거의 설정되지 않을 것으로 예상되므로 Linux 기반 시스템에 설치하는 것은 쉽지 않습니다. 이로 인해 virtualenv에 설치하기가 더 어려워집니다.

gdal버전은 다른 버전을 가정 GDAL할 수 있으며 시스템에 예상 버전이 없으면 설치에 실패합니다.

파이썬 패키지 는와 같은 것을 설치 하지만 훨씬 더 가상 친화적 인 방식으로 수행 하는의 pygdal대안 입니다.gdalgdal

pygdal관련 버전을 반영하는 버전으로 제공됩니다 GDAL. 따라서 GDAL 시스템에 버전 1.10.1이 있으면 버전 1.10.1을 설치해야 pygdal합니다.

Python 패키지 gdal(및 pygdal)는 루트 Python 패키지라는 이름을 사용 osgeo하며 하나의 하위 모듈 세트가 osgeo.gdal있습니다.

필요한 경우 기본 버전 이외의 다른 버전을 GDAL설치하여 사용할 수 있습니다. 이것은이 설명의 범위를 벗어납니다.

휠 패키지는 크로스 컴파일이 가능하며 범위를 벗어납니다.

GDAL시스템에 설치

으로 pygdal필요로 GDAL존재하는 공유 라이브러리를 먼저 설치해야합니다.

GDAL아직 설치되지 않았다고 가정하면 전화 gdal-config하면 불만을 제기하고 후속 조치 방법을 알려줍니다.

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

힌트를 따라 설치하십시오.

$ sudo apt-get install libgdal-dev

각 배포판은 서로 다른 버전을 사용할 수 있습니다 GDAL. 우리가 사용하는 것을 찾으려면 :

$ gdal-config --version
1.10.1

이제 GDAL설치되었으며 버전이 1.10.1입니다 (버전이 다를 수 있음).

pygdal소스 패키지에서 설치 (컴파일 필요)

현재 pygdaltar.gz 패키지로만 제공되며 패키지 소스를 포함하고 컴파일이 필요합니다.

GDALis 의 버전 1.10.1과 virtualenv가 이미 활성화 되었다고 가정합니다 .

$ pip install pygdal==1.10.1

완료하는 데 시간이 걸릴 수 있습니다. numpy가 필요하며 컴파일이 필요할 수도 있습니다. 기다려

설치되어 있는지 확인하십시오.

$ pip freeze|grep pygdal
pygdal==1.10.1.0

이제부터는 파이썬 패키지에서 설치하는 것과 똑같은 방식으로 파이썬 코드에서 osgeo 패키지를 사용할 수 있습니다 gdal.

휠 패키지 만들기 pygdal

휠 패키지는 정확히 동일한 아키텍처에 대해 작성해야합니다. 즉, 다음과 일치해야합니다.

  • CPU 아키텍처
  • OS (Linux / Windows)

이 경우 GDAL설치된 버전과 일치해야합니다 .

원하는대로 virtualenv에서 다음 단계를 수행 할 수 있습니다.

먼저 휠 패키지가 설치되어 있는지 확인하십시오.

$ pip install wheel

가정 GDAL하고 버전 1.10.1 이 있다고 가정합니다 .

$ pip wheel pygdal==1.10.1.0

완료 될 때까지 기다리십시오.

그 후, 서브 디렉토리 wheelhouse를 찾을 수 있으며 확장자가 whl 인 패키지를 포함합니다 :

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

pygdal휠 패키지에서 설치

휠 형식 패키지에서 설치하는 것은 컴파일이 필요하지 않기 때문에 훨씬 빠릅니다 (1 분에 비해 1 초).

휠 패키지가있는 디렉토리는 어떤 이름이든 가질 수 있습니다. 우리는 이름 휠 하우스 만 사용할 것입니다.

virtualenv를 먼저 활성화하십시오.

휠 하우스 디렉토리에 필요한 휠 패키지 ( pygdal및에 대한 numpy)가 모두 있는지 확인하십시오 .

GDAL가 설치되어 있고 버전이 버전과 일치 하는지 확인하십시오 pygdal.

pygdal휠 패키지에서 설치 :

$ pip install pygdal==1.10.1.0 -f wheelhouse

-f wheelhouse는 whl 파일이있는 디렉토리를 가리켜 야합니다.

설치할 필요가 없으며 numpy자동으로 설치됩니다.


이 anwser는 여기에 다른 훌륭한 답변을 작성하고 세부 사항에 대한 완전한 지침을 제공하려고 시도합니다. 내가 붙어있는 곳에서 반복 패키지 설치를 virtualenv로 가속화하기 위해 휠 패키지 형식을 사용하는 단계를 추가합니다.
Jan Vlcinsky

pygdal승리를 위해!! pypi : "Virtualenv 및 setuptools 표준 GDAL 파이썬 바인딩의 친숙한 버전"<3
gisdude

9

예, PIP를 실행하기 전에 다음을 수행하면 작동하는 것으로 보입니다.

CPLUS_INCLUDE_PATH = / usr / include / gdal 내보내기

C_INCLUDE_PATH = / usr / include / gdal 내보내기


6

pip 설치 gdal의 문제점은 전체 라이브러리가 아닌 바인딩 만 가져 오기 때문에 까다로울 수 있다는 것입니다. 이를 해결하는 한 가지 방법은 pip 명령을 사용하여 다운로드하지만 설치하지 않는 것입니다. 그런 다음 구성 파일에서 헤더 위치를 조정하십시오. 그런 다음 pip 설치하십시오. meh.

나는 같은 문제가 있었지만 gdal을 다시 컴파일하고 파이썬 바인딩생성하기 위해 패브릭 스크립트를 작성하는 데 시간이 덜 걸린다는 것을 깨달았습니다 . 당신은 그것으로 filegdb의 이점을 얻습니다. 내가 쓴 것을 사용하거나 마음의 내용에 맞게 조정하십시오.


3

잠시 후, 이것은 pip 설치를 중단하지 않고 포함 경로를 제공합니다. 환경 변수를 사용하여 포함 경로를 설정할 수 있습니다.

헤더가 / usr / include / gdal에 있다고 가정하면

export CPLUS_INCLUDE_PATH=/usr/include/gdal

pip를 실행하기 전에.


이 사용하여, 나는 얻을 "확장 / gdalconst_wrap.c : 2732 : 18 : 치명적인 오류 : 해당 파일이나 디렉토리 : gdal.h"gdal.h이 존재하더라도/usr/include/gdal
anand.trex

1
C_INCLUDE_PATH를 대신 사용하거나 추가로 도움이됩니까?
Crischan

3

해결책을 찾기 위해 왼쪽과 왼쪽을 본 후에 시스템 패키지에 액세스 할 수없는 virtualenv 내에서도 Ubuntu 14.04에서 작동하는 것이 있습니다.

  • 종속성 설치 :

    sudo apt-get install libgdal-dev libgdal1h libgdal1-dev
  • 컴파일러 플래그를 설정하십시오.

    export CFLAGS=$(gdal-config --cflags)
  • 시스템 라이브러리에 해당하는 버전을 설치하십시오 (Ubuntu Trusty 작성시 1.10 헤더 사용).

    pip install GDAL==1.10.0

또한 우분투 16.04에서 나를 위해 일했습니다
Luke W

2

이제 virtualenv 및 setuptools 표준 버전의 표준 GDAL python 바인딩 pygdal을 사용할 수 있습니다 .


2

Mac에서도 비슷한 문제가 발생했습니다. 이것이 내가 해결 한 방법입니다.

먼저 virtualenv를 사용하여 가상 Python 2.7 환경을 설정했습니다. 파이썬 배포본은 'env'라는 디렉토리에 설치되었습니다.

그런 다음 핀을 사용하여 gdal을 설치했습니다.

fink selfupdate
fink update-all
fink install gdal

또한 gdal-dev를 설치했지만 이미 gdal과 함께 설치되었을 수 있으므로 이것이 필요하지 않을 수 있습니다.

다음을 사용하여 설치된 버전을 확인했습니다.

gdal-config --version

내 설치에서 결과 1.11.1을 생성했습니다.

gdal의 fink 설치는 cpl_port.h 헤더 파일을 / sw / include / gdal1에 설치했습니다. 자신의 설치를 확인하십시오. 그런 다음 입력했습니다.

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

그것은 나를 위해 작동하는 것처럼 보이지만 아직 설치를 테스트하지 않았습니다.


2

리포지토리에 GDAL 2.0.2가있는 Fedora 24에서는 다음과 같이 Python 패키지를 설치해야했습니다.

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

2

Mac (OS 10.10.5)에 Python GDAL 바인딩을 설치하는 동안 비슷한 오류가 발생했습니다. "완료"다운로드를 사용하여 http://www.kyngchaos.com/software/frameworks 에서 기본 GDAL 소프트웨어를 설치했습니다 . 세 가지 환경 변수를 설정해야했습니다.

C_INCLUDE_PATH = / 라이브러리 /Frameworks/GDAL.framework/ 헤더 내보내기 CPLUS_INCLUDE_PATH = / 라이브러리 /Frameworks/GDAL.framework/ 헤더 내보내기 LIBRARY_PATH = / Library / Frameworks / GDAL.framework / Versions / Current / unix / lib

마지막 부분은 /Library/Frameworks/GDAL.framework/Programs를 PATH에 추가하는 것이 었습니다.

echo 'export PATH = / 라이브러리 /Frameworks/GDAL.framework/Programs:$PATH'>> ~ / .bash_profile

그 후 pip는 파이썬 용 GDAL을 설치할 수있었습니다. 도움이 되었기를 바랍니다.


1

나도 문제가 있었고 gdal 1.10.1그냥 다음을 수행pip install --global-option=build_ext --global-option="-I/usr/include/gdal" gdal==1.10.0
ryanjdillon

1

질문의 virtualenv 특정 측면에 대답하려면 다음을 수행하십시오.

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

그 조심 pygdal뭐라고에 비해 GDAL의 다른 버전이 필요할 수 있습니다 GDAL파이썬 바인딩의 패키지가 필요합니다.


아래는 최신 버전의 Fedora (20 및 23)에서 사용했던 것입니다.

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

1

단일 명령으로 Pip를 통해 설치

GDAL develop 패키지가 설치되고 헤더 파일 버전이 올바르다 고 가정하면 PyPI 저장소에서 GDAL을 설치하는 데 필요한 유일한 명령은 다음과 같습니다.

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

헤더 파일의 위치는이라고 가정합니다 /usr/include/gdal.

최신 GDAL 설치

위의 pip 명령으로 GDAL을 설치하려면 헤더 파일의 버전이 pip가 빌드를 수행하는 버전과 유사해야합니다. GDAL은 https://trac.osgeo.org/gdal/wiki/DownloadingGdalBinaries 에서 업데이트 된 이진 참조를 가지고 있습니다 .

OpenSUSE에 설치하는 방법

위 링크를 따라 가면 OpenSUSE 42.1 http://download.opensuse.org/repositories/Application:/Geo/openSUSE_Leap_42.1/Application에 대한 최신 GIS 패키지 세트에 대한 URL이 추가로 포함되어 있습니다 . Geo.repo

zypper ar -f <URL>

적절한 패키지로 교체하십시오. 그리고 사용하지 않으면 https://trac.osgeo.org/gdal/wiki/DownloadingGdalBinaries에zypper 더 많은 정보가 있습니다.


1

Windows 10에서 동일한 문제가 발생했습니다. 몇 가지 실험 후에이 솔루션이 제공되었습니다.

  1. 설치 후 환경 변수를 변경 한 후 Python 3.6 (설치되지 않은 경우) 다운로드 및 설치 PYTHONPATH=c:\python36 PATH=C:\python36\Scripts\;C:\python36\;%PATH%
  2. https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal 에서 올바른 Python 버전을 보려면 * .whl을 다운로드 하십시오.
  3. http://landinghub.visualstudio.com/visual-cpp-build-tools 다운로드 및 설치
  4. pip install *.whl (2 단계에서 * .whl)

thnx, 파이썬이 자동으로 환경을 설치했다고 생각했지만 모든 것이 매력처럼 작동한다고 제안하면서 환경을 제거하고 다시 만들었습니다.
Florjan

1

Docker를 사용하는 경우 GDAL 및 Python 3을 사용하여 컨테이너를 오픈 소스로 공개합니다. 컨테이너는 위에 설명 된 단계를 캡처하여 앱에서 GDAL을 빠르게 사용할 수 있도록합니다.

thinkwhere / gdal-python


0

데비안 기반 배포판을 실행하는 경우 GDAL 파이썬 라이브러리는 패키지 관리자를 통해 사용할 수 있으며 다음과 같이 간단하게 설치할 수 있습니다

sudo apt install python-gdal 또는 sudo apt install python3-gdal


0

도커 컨테이너에 콘 다가있는 Ubuntu 16.04 (jupyter stack)

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

0

우분투에서 python3의 최신 gdal을 설치하는 간단한 솔루션 :을 통해 라이브러리 파일 설치 libgdal-dev및 python 래퍼python-gdal

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

python2의 경우 :

sudo apt-get install python-gdal

0

메모리 사용 중에 문제가 발생할 수도 있습니다.

실행하는 경우 pip install gdal==2.2.3GCC를 뭔가를 컴파일 시작이며 메모리 사용량을 증가시킨다.

메모리가 충분하지 않으면 다음과 같은 메시지와 함께 컴파일러가 실패합니다.

종료 상태 4로 'x86_64-linux-gnu-gcc'가 실패 함

문제를 해결하려면 더 많은 램을 추가하거나 일부를 해제해야합니다.


0

이 접근법은 저에게 효과적이었습니다.

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)

또는 Dockerfile의 일부로 :

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를 사용 중이고 최신 버전의 Python 용 GDAL이 필요한 경우 .travis.yml파일의 일부 부분 은 다음과 같습니다.

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`
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.