実行環境 Windows10, conda 4.8.3, python 3.9.5, geopandas 0.9.0
はじめに
普段シェープファイルの処理は PyShp で間に合わせているのですが、Pandas-like な処理をしたいとか、大量のレコードを扱いたいとか多々あるので、GeoPandas に手を出すことにしました。
さっそく conda の仮想環境から GeoPandas をインストールして使おうとしたのですが、例によってつまづいた のでここに記します。
Qiita でも既に同様の内容の記事はいくつかありますが、記録という意味も込めて投稿しています。
要約すると以下の通り。
エラー内容: GeoPandas をインストールできない、またはインポートできない
原因: パッケージをインストールするチャンネルの混在
対応: 仮想環境でパッケージ経由チャンネルを conda-forge にそろえる
分かっている人には当たり前のことなのでしょうけれど。
以降詳細です。
Try 1
以下の条件で GeoPandas をインストールしてみる
Python: default チャンネルからインストール
GeoPandas: conda-forge チャンネルからインストール
$ conda install -c conda-forge geopandas
>>> import geopandas
...
OSError: could not find or load spatialindex_c-64.dll
spatialindex_c-64.dll が見つからない、またはロードできませんと言われました。
失敗。
Try 2
以下の条件で GeoPandas をインストールしてみる
Python: default チャンネルからインストール
GeoPandas: default チャンネルからインストール
$ conda install geopandas
...
Found conflicts! Looking for incompatible packages.
...
UnsatisfiableError: The following specifications were found to be incompatible with each other:
競合が見つかりました、仕様は互換性がありませんでした、みたいなことを言われます。
失敗。
Try 3
以下の条件で GeoPandas をインストールしてみる
Python: conda-forge チャンネルからインストール
GeoPandas: conda-forge チャンネルからインストール
$ conda install -c conda-forge python
$ conda install -c conda-forge geopandas
import geopandas
これでうまくいきました。
チャンネルとは
そもそも conda-forge とは何か、という今更な疑問に直面したので調べました。
conda-forge is a GitHub organization containing repositories of conda recipes.
(conda-forge のトップページからの抜粋)
つまり conda 公式リポジトリではなく、別の GitHub のリポジトリで管理されているPython パッケージ集の1つということですよね。
言ってしまえばその通り。
なお、conda info コマンドでデフォルトチャンネルの URL が出てきます。
$ conda info
...
channel URLs : https://repo.anaconda.com/pkgs/main/win-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/win-64
https://repo.anaconda.com/pkgs/r/noarch
https://repo.anaconda.com/pkgs/msys2/win-64
https://repo.anaconda.com/pkgs/msys2/noarch
...
さらにそもそもな話ですが、
GeoPandas 公式ホームページ -> Getting started -> Installation
の Using the conda-forge channel の Note に、
両方のチェンネルのパッケージの混在はインポートの問題を引き起こすので、デフォルトか conda-forge のどちらかから、すべてをインストールすることを強く勧めます
みたいなことがしっかり書いてありました。
反省。
最後に
Python 本体と GeoPandas をインストールするときのチャンネルを conda-forge に統一することで、GeoPandas を問題なく使えるようになりました。
conda を使う以上 pip は使わない、という基本的な心掛けはもっていましたが、conda の仮想環境のチャンネルの混在は気にしていませんでした。
これを機に仮想環境を再構築した次第です。
ということで GeoPandas 使っていきたいと思います。