Python GDALパッケージには、pip経由でインストールするときにヘッダーファイルがありません


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の環境変数はありますか?


Windowsでも同様の問題があり、仮想環境でpipを介してgdalをインストールします。![ここに画像の説明を入力 ](i.stack.imgur.com/EVLWP.jpg
ハヤットカーン

回答:


94

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

働いた唯一のソリューションのようです。
ボズド14年

1
別のシステムでこれを試してみましたが、このプラス@nickvesの答えの組み合わせが実際にそれを行うと思います。
ボズド14年

これは私のために働いた。
ジャランダ14年

1
とても良い。システムとpythonパッケージにインストールされているGDALのバージョンが異なる場合、失敗します。解決策は、システムでGDALのバージョンを見つけ、関連するpythonパッケージバージョンをインストールするようにpipに指示することです。それは助けたので、私の場合(Ubuntuの14.04)では、両方のは、10.0です$ pip install GDAL==10.0
月Vlcinsky

4
これがUbuntu 16.04で動作することを確認できますpip install GDAL==1.10.0
ベール

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

そのオープンIDLEの後:

from osgeo import gdal

そしてあなたは行ってもいいです!


3
こんにちはあなたの答えに感謝しますが、CIプロセス中にvirtualenvを使用して隔離された環境を作成するため、pip経由でインストールする方法が本当に必要です。
ケビン

1
'gdal-config --version'および 'gdal-config --libs'を実行したときの出力は何ですか?
ニックス

GDAL v1.9.1。gdal-config --libs -> -L/usr/lib -lgdal
ケビン

2
@nickves Ubuntuで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システム全体のインストールのプレフィックス)を渡し、システムにインストールされたGDALバージョンに一致するバージョンをインストールするようにpipに指示することにより、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の回答から不安定なリポジトリを適切に追加した後、2行目が機能しました。ありがとうございます!
パトリックウィリアムズ

1
ありがとう、これは私のために働いてしまいました。できるだけ厳密にcartodbのインストールに固執しようとしているため、少し変更する必要がありましたが、最終的な作業インストールコマンドとしてこれを使用することsudo pip install --no-use-wheel -r python_requirements.txt --global-option=build_ext --global-option="-I/usr/include/gdal" になりました。正直に言って問題ではありませんが、pipインストールセット全体は正常に完了します。U 12.04x64
vaxhax

12

gdalLinuxでvirualenvにPythonパッケージをインストールする

GDALGEO関連の操作のための素晴らしいツールキットを提供します。ただし、Linuxのvirtualenvにインストールするのは簡単な作業ではありません。

このレシピでは、その方法を説明しています。

注意

ここではgdal、Pythonパッケージには小文字を使用しGDAL、一般的なシステム全体のライブラリには大文字を使用します。

必要条件

  • osgeoライブラリ(gdalPythonパッケージ経由でインストール)をvirtualenvに使用できるようにします
  • Linux Ubuntuへのインストールを許可する

インストール方法

インストールには複数の方法があります。1つはコンパイルが必要で、さらに数分かかります。

もう1つはパッケージのホイールパッケージをpygdal使用しており、非常に高速です。とにかく、ホイールパッケージを作成するには、一度作成する必要があり、作成にはコンパイル手順が含まれます。

GDALパッケージとバージョンについて

GDAL GEO関連の計算用の一般的なC(++)ベースのライブラリです。

GDAL ユーティリティは、共有ライブラリを利用可能にするシステム全体にインストールできますが、Pythonパッケージ自体はインストールしません。

GDAL 異なるバージョンがあり、各Linuxディストリビューションはデフォルトで異なるバージョンをインストールする場合があります。

Pythonパッケージgdalはコンパイルが必要で、環境変数がほとんど設定されていないため、Linuxベースのシステムにインストールするのは簡単ではありません。これにより、virtualenvへのインストールがより困難になります。

gdalバージョンは異なるバージョンを想定GDALしている場合があり、システムに予想されるバージョンが存在しない場合、インストールに失敗します。

Pythonパッケージpygdalは、の代替物gdalであり、と同じものをインストールしますgdalが、はるかにvirtualenvに優しい方法でインストールします。

pygdal関連バージョンを反映したGDALバージョンがあります。そのGDAL ため、システムにバージョン1.10.1がある場合は、pygdalバージョン1.10.1 をインストールする必要があります。

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ソースパッケージからインストール(コンパイルが必要)

現在pygdal、tar.gzパッケージでのみ提供されています。これにはパッケージソースが含まれており、コンパイルが必要です。

GDALis のバージョンと、1.10.1virtualenvがすでにアクティブになっていると仮定します。

$ pip install pygdal==1.10.1

完了するまでに時間がかかる場合がありますが、numpyが必要であり、コンパイルも必要になる場合があります。ちょっと待って。

チェックして、インストールされています:

$ pip freeze|grep pygdal
pygdal==1.10.1.0

これからは、gdalPythonパッケージでインストールする場合とまったく同じ方法で、osgeoパッケージをPythonコードで好きなように使用できます。

ホイールパッケージの作成 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秒)。

wheelパッケージを含むディレクトリには任意の名前を付けることができます。wheelhouseという名前だけを使用します。

最初にvirtualenvをアクティブにします。

wheelhouseディレクトリに、必要なホイールパッケージ(pygdalnumpy)の両方があることを確認してください。

GDALがインストールされ、バージョンがのバージョンと一致することを確認してくださいpygdal

pygdalホイールパッケージからインストールします。

$ pip install pygdal==1.10.1.0 -f wheelhouse

-f wheelhouseは、whlファイルのあるディレクトリを指します。

インストールする必要はありませんnumpy。自動的にインストールされます。


このanwserは、ここで他の素晴らしい答えに基づいて構築され、詳細について完全な指示を与えようとします。
1月Vlcinsky 14

pygdal勝利のために!!pypi:「VirtualGDとsetuptoolsに対応した標準GDAL Pythonバインディングのバージョン」<3
gisdude

9

はい、PIPを実行する前に次の操作を行うと動作するようです。

エクスポートCPLUS_INCLUDE_PATH = / usr / include / gdal

export C_INCLUDE_PATH = / usr / include / gdal


6

gdalをインストールするpipの問題は、ライブラリ全体ではなくバインディングのみを取得するため、トリッキーになる可能性があることです。これを解決する1つの方法は、pipコマンドを使用してダウンロードすることです(インストールはしません)。次に、構成ファイルからヘッダーの場所を調整します。次に、それをpipインストールします。あー

私は同じ問題を抱えていましたが、gdalを再コンパイルしてpythonバインディングを生成するファブリックスクリプトを作成する方が時間がかからないことに気付きました。それによって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を使用すると=が役立ちますか?
クリシャン

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

また、Ubuntuの16.04で私のために働いた
ルークW

2

これで、virtualenvとsetuptoolsの使いやすいバージョンの標準GDAL Pythonバインディングpygdalを使用できます。


2

Macでも同様の問題が発生していました。これは私がそれを解決した方法です:

まず、virtualenvを使用して仮想Python 2.7環境をセットアップします。Pythonディストリビューションは、「env」というディレクトリにインストールされました。

その後、finkを使用して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ソフトウェアをインストールしました。3つの環境変数を設定する必要がありました。

export C_INCLUDE_PATH = / Library / Frameworks / GDAL.framework / Headers export CPLUS_INCLUDE_PATH = / Library / Frameworks / GDAL.framework / Headers export LIBRARY_PATH = / Library / Frameworks / GDAL.framework / Versions / Current / unix / lib

最後の部分は、/ Library / Frameworks / GDAL.framework / ProgramsをPATHに追加することでした。

echo 'export PATH = / Library / Frameworks / GDAL.framework / Programs:$ PATH' >>〜/ .bash_profile

その後、pipはpython用のGDALをインストールできました。お役に立てれば。


1

これらのgdalパッケージ0.10.1は、Ubuntu 12.04で正常に動作します: https ://launchpad.net/~ubuntugis/+archive/ubuntu/ubuntugis-unstable/+sourcepub/4353415/+listing-archive-extra

他のubuntuバージョンのgdalパッケージ0.10.1: https ://launchpad.net/~ubuntugis/+archive/ubuntu/ubuntugis-unstable/+packages?field.name_filter=gdal&field.status_filter=published&field.series_filter =


私も問題を抱えていて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

Pythonバインディングのパッケージが必要pygdalとするものと比較して、異なるバージョンのGDALを必要とする場合があることに注意してくださいGDAL


以下は、Fedoraの最近のバージョン(20および23)で使用するために使用したものです。

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

1

単一コマンドでのPipを介したインストール

GDAL開発パッケージがインストールされ、ヘッダーファイルのバージョンが正しいと仮定すると、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>

適切なパッケージに置き換えます。使用していない場合はzypperhttps://trac.osgeo.org/gdal/wiki/DownloadingGdalBinariesに詳細情報があります。


1

私はWindows 10でも同じ問題を抱えていました。いくつかの実験の後、私はこの解決策を見つけました。

  1. インストール後、Python 3.6をダウンロードしてインストールします(インストールされていない場合)。環境変数を変更します。 PYTHONPATH=c:\python36 PATH=C:\python36\Scripts\;C:\python36\;%PATH%
  2. 正しいPythonバージョンの* .whlをhttps://www.lfd.uci.edu/~gohlke/pythonlibs/#gdalからダウンロードします
  3. http://landinghub.visualstudio.com/visual-cpp-build-toolsをダウンロードしてインストールします
  4. pip install *.whl (* .step2の.whl)

thnx、私はPythonが自動的に環境をインストールしたと思ったが、その後、すべてが魅力のように機能することを示唆したので、環境を削除して再作成した。
フロリアン

1

Dockerを使用している場合は、GDALとPython 3の使用を簡素化するコンテナをオープンソースにします。コンテナは、上記の手順をキャプチャして、アプリでGDALをすばやく使用できるようにします。

thinkwhere / gdal-python


0

Debianベースのディストリビューションを実行している場合、GDAL pythonライブラリはパッケージマネージャー経由で利用でき、次のように簡単にインストールできます。

sudo apt install python-gdal または sudo apt install python3-gdal


0

Dockerコンテナ(jupyterスタック)にcondaがあるUbuntu 16.04で

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では、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を実行すると、何かをコンパイルするために起動され、メモリ使用量が増加します。

十分なメモリがない場合、コンパイラは次のようなメッセージで失敗します

「x86_64-linux-gnu-gcc」は終了ステータス4で失敗しました

修正するには、RAMを追加するか、RAMを解放する必要があります。


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.