pygribのインストール方法:Amazon Linux2
<pygribのインストール方法:Amazon Linux2>*1
※ 2020/06/09にQrunchで書いた記事を移行しました。
Amazon Linux2で、pygribのインストールに、かなり手間取りました。 自分や他の方が、再び同じ所で躓かないように、備忘録として解決法をまとめました。
何が起きるのか
pygribをpipでインストールしようとするとエラーが表示されます。
sudo pip3 install numpy
sudo pip3 install pygrib
# ModuleNotFoundError: No module named 'pyproj'
pyprojをインストールしてリトライすると、こうなります。
sudo pip3 install pyproj sudo pip3 install pygrib # pygrib.c:614:10: 致命的エラー: grib_api.h: No such file or directory # #include "grib_api.h" # ^~~~~~~~~~~~
"grib_api.h"が無い問題が解決できませんでした。 試行錯誤して"grib_api.h"は入っても、結局pygribに失敗しました。 最終的には以下の手順で無事インストールできたわけですが、随分と時間を要してしまいました。
色々インストールすることになった
インストールしたかったのはpygribだけでした。しかし、最終的に以下のモノをインストールするに至りました。
- pygrib
- pyproj, numpy (pygribで使用しているため)
- setuptools (アップグレード。pygribインストール時にエラーが出るため)
- ecCodes (pygribで使用しているため)
- gfortran (ecCodesインストールのため)
- CMake (ecCodesインストールのため)
- OpenSSL (CMakeで使用しているため)
そもそもは、気象データの読み込みがしたかったのです。 気象データがGRIB2というフォーマットであり、GRIB2ファイル読み込みのためにpygribを使おうとしました。
[1] CMake3のインストール方法
[1-1] OpenSSLをインストールする
CMakeの依存関係にOpenSSLが含まれているため、事前にインストールします。
sudo yum install openssl openssl-devel
ちなみに、OpenSSLをインストールせずCMakeをインストールしようとすると、以下のエラーが表示されます。
# Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)
[1-2] CMakeをインストールする
公式の手順。
最新版はココにあります。wgetやcurlコマンドでダウンロードします。
また、configure実行時にインストール先を指定できます。
指定する場合はprefix
に指定します。
wget https://github.com/Kitware/CMake/releases/download/v3.17.3/cmake-3.17.3.tar.gz tar xzf cmake-3.17.3.tar.gz cd cmake-3.17.3/ ./configure --prefix=/usr/local/cmake/3.17.3/ make sudo make install
インストール完了後、CMakeが使えるようにパスを通しておきます。
export "PATH=$PATH:/usr/local/cmake/3.17.3/bin/"
でも良かったのですが、/usr/local/bin/にシンボリックリンクを作成しました。
sudo ln -s /usr/local/cmake/3.17.3/bin/cmake /usr/local/bin/cmake sudo ln -s /usr/local/cmake/3.17.3/bin/cpack /usr/local/bin/cpack sudo ln -s /usr/local/cmake/3.17.3/bin/ctest /usr/local/bin/ctest
[2] ecCodesのインストール方法
かつては、GRIB APIが使われていましたが、ecCodesに移行されています。 2018年12月現在、GRIB APIはメンテナンスされなくなったと公式にも書いてあります。
[2-1] gfortranのインストール
ecCodesインストール前にgfortranをインストールします。
sudo yum install gcc-gfortran
インストールしないと、ecCodesをmakeする際に以下のエラーが発生します。 ecCodesインストール時にfortranを使用しない選択肢もありそうでしたが、面倒なのでインストールしました。
# CMake Error: your Fortran compiler: "CMAKE_Fortran_COMPILER-NOTFOUND" was not found. Please set CMAKE_Fortran_COMPILER to a valid compiler path or name.
[2-2] ecCodesのインストール
公式の手順。
最新版はココからダウンロードします。
-DCMAKE_INSTALL_PREFIX
にインストール先を指定することが可能です。
wget https://confluence.ecmwf.int/download/attachments/45757960/eccodes-2.17.0-Source.tar.gz tar xzf eccodes-2.17.0-Source.tar.gz mkdir build ; cd build cmake -DCMAKE_INSTALL_PREFIX=/usr/local/eccodes/2.17.0 ../eccodes-2.17.0-Source make ctest sudo make install
インストール終了後に、python用のモジュールをインストールします。
sudo pip3 install eccodes-python
[3] pygribのインストール方法
[3-1] setuptoolsのアップグレード
sudo pip3 install --upgrade setuptools
[3-2] numpy, pyprojのインストール
sudo pip3 install numpy pyproj
[3-3] pygribのインストール
pipでpygribをインストールすることも出来ます。 しかし、私の環境ではエラーとなり解決できませんでした。ネットで調べてみてもインストールできないケースは多いようです。 そのため、githubからソースをダウンロードしインストールしました。
git clone https://github.com/jswhit/pygrib cd pygrib cp -p setup.cfg.template setup.cfg
"setup.cfg"のgrib_api_dir
を変更し、ecCodesのインストール先を指定します。
インストール先は環境によって異なります。私の環境では以下の通りです。
grib_api_dir = /usr/local/eccodes/2.17.0/
.gitディレクトリを削除したのち圧縮し、pipでインストールします。
sudo rm -rf .git zip -r ../pygrib.zip * cd ../ sudo pip3 install pygrib.zip
終わりに
最近はインストールも便利になって忘れていましたが、コマンド一つでインストールできることのありがたみを感じました。
参考文献
以下の記事を参考にさせていただきました。
- Amazon Linux 2 Clang 7.0.1 Install - トルネード
- 【CentOS7】cmake3インストール - かえでBlog
- How to install PyGrib with ECCodes (Python 3.6.5, Ubuntu 18, 16, RHEL) · GitHub
*1:Clker-Free-Vector-ImagesによるPixabayからの画像