PythonにGDALをインストールする手順で躓いた際の解決方法の備忘録です。私はGDALでしか検証していませんが、地理空間系の解析に必要な他のライブラリ(basemap, Cartopy, cftime, Fiona, netCDF4, pygeos, pyproj, rasterio, Rtree, shapely)についても同様の手順が使えそうです。
GDALのインストールでエラー発生
久々に画像解析の作業を行うことになり、PCにPythonをインストールしました。次いで必要なパッケージもpip
コマンドを使ってインストールしていったのですが、GDALをインストールしようとしたところ、エラーが出て止まってしまいました。
> pip install gdal
Collecting gdal
Using cached gdal-3.9.1.tar.gz (840 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: gdal
Building wheel for gdal (pyproject.toml) ... error
error: subprocess-exited-with-error
× Building wheel for gdal (pyproject.toml) did not run successfully.
(中略)
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools" (https://visualstudio.microsoft.com/visual-cpp-build-tools/)
以下のサイトでも「GDALは複雑なので追加のステップが必要かも」(Due to the complex nature of GDAL and its components, different bindings may require additional packages and installation steps. )と説明されています。
ただ、エラー文の通りにVisual C++をインストールしても、なぜか上と同じエラーが出てしまいうまくいきません。試行錯誤していたところ、以下の方法で解決できたので紹介します。なお、こちらで紹介する手順はおそらくWindowsにしか対応していないと思われます。Macユーザーの方のお役には立てないかもしれません。
検証した環境
Windows 11
Python 3.11.1
.whlファイルを使ってGDALをインストール
実は、以前はこのような問題にはあたりませんでした。というのも、インストーラーの取得をpip
コマンドに頼っていなかったためです。Pythonパッケージのインストーラーを公開してくれているサイトから個別にダウンロードしていました。その方法は当時所属していた研究室のブログで紹介しました。
今回もその方法に立ち返って試そうとしたのですが、その時に頼っていたサイト(https://www.lfd.uci.edu/~gohlke/pythonlibs/)は残念ながら閉鎖してしまったようです。ただ嬉しいことに、同じ人が改めてGitHubにインストーラーを公開してくれています。
こちらのサイトにアクセスし、最新のリリースのページに移動します。
リリースページ内に上がっている多くのパッケージの中から、必要なパッケージを探します。ファイル名は、[ソフト名]-[ソフトのバージョン]-[対応するPythonバージョン]-[対応するPythonバージョン2]-[Windowsのビット数].whlとなっています。今回はPCのビット数が64、Python 3.11で使用するものを探していたので、「GDAL-3.8.4-cp311-cp311-win_amd64.whl」をダウンロードしました。
ダウンロードできたら、ターミナルに以下のように打ち込むとインストールできます。
cd [ダウンロード先のパス]
pip install [ファイル名].whl
なぜAnacondaを使わないの?
私は試していませんが、Anacondaを使用するとかなり簡単にインストールできるらしいです。
では、なぜAnacondaを使用しないのか? ということになりますが、私の場合は単にPythonをたまーにしか使用しないせいで、Anadondaを使用するという発想に至らなかっただけです…
ただ、たまたまこの記事を書いている最中、Anacondaが有償提供の方針となったことを知りました。もしかしたらPythonそのままの環境を使う機会が増えるかもしれません。