Windows10にPyGMTをインストールする　2023.01版

# はじめに
新調したWindows10パソコンにPyGMTが動く環境をインストールする際に、手順を記録したものを公開。
2023.01.21時点のPyGMTの最新バージョン＝0.8.0、GMTバージョン＝6.4.0 でインストールしています。

なお、この記事はGMTを使いはじめた学生さんがここに辿り着いた時にも解読できるように書いているつもりです…が、一部端折っていてわかりにくい部分があるかもしれません。悪しからず。

# 参考リンク
[PyGMT公式のInstallingページ](https://www.pygmt.org/latest/install.html)
[PyGMT-HOWTO](https://tktmyd.github.io/pygmt-howto-jp/pygmt.html
)
[PyGMT for Windowsのインストールとテスト](https://estuarine.jp/2019/03/pygmt/)
[WSL2 のインストール，WSL2 上への Ubuntu のインストールと利用](https://www.kkaneko.jp/tools/wsl/wsl2.html)
↑こちらを中心に参考にさせてもらいました。

# PyGMT環境が整うまでの道のり
- WSL2を使うための設定
- Ubuntu22.04LTSのインストール
- Minicondaのインストール
- 仮想環境の作成とPyGMTのインストール
- 動作確認

WSL2を使うための設定とUbuntu22.04LTSのインストールについては、[Windows10にUbuntu22.04環境をインストールする(手動)　2023.01版](https://qiita.com/ckw-1227/items/c3680fff974f82085caa)として纏めたのでそちらを参考にしてください。

# Minicondaの使用について
Anacondaは使用方法によっては有償になるとのことで、[PyGMT-HOWTO](https://tktmyd.github.io/pygmt-howto-jp/install.html
)で紹介されているMinicondaを使うことにする。
>Anacondaをインストールするだけで一通りの計算環境が揃うため便利なものだったのですが，2020年4月より利用規約が改定となり，大規模な商用利用は有償になりました．ただし，FAQによると大学関係者や非商用利用に関してはこの条件が適用されないと明記されています．さらに，有償になるのはパッケージ管理のdefaultのリポジトリであり，コミュニティで作成されているリポジトリであるconda-forgeの利用については制限がなことが明言されているようです．
>
>そこで，ここではPythonおよびパッケージ管理コマンドのcondaを含む最小限のパッケージであるMinicondaを導入し，そこからconda-forgeのリポジトリを使って環境の構築をする方法を紹介します．Minicondaは有償ではないため，この方法ならどなたでも自由に使えるはずです

# Minicondaのインストール

１.[公式ページ](https://docs.conda.io/en/latest/miniconda.html)からインストーラを取得する。今回はUbuntuでPython3.9バージョンを利用するので、Python3.9のMiniconda3 Linux 64-bitを取得した。

２.ダウンロードしたインストーラを適当な場所（ファイルパスにスペースが入らないようにする）に保存して、Ubuntuを開く。
"/mnt/[ダウンロードしたパス]"に移動すると保存したインストーラがあるのがわかる。
↓例：「C:\localDatas\install」に保存したインストーラファイルは、「/mnt/c/localDatas/install/」の下に確認できる
![003_conda_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1402694/0ecac910-4b12-65f0-bef0-7bb04dc614ea.png)

３.「bash [インストーラファイル名]」を実行。
```bash
bash Miniconda3-py39_22.11.1-1-Linux-x86_64.sh
```
インストールが始まる。画面の指示に従って入力していく。
![003_conda_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1402694/df39053d-ad34-39a6-fad4-98c4b8ef1786.png)
最初にEnter ⇒ license termsに同意する？でyes ⇒ Minicondaの保存先を指定してEnter ⇒ インストール完了後にMinicondaの初期化をするか聞かれるのでyes
の順に入力した。

４.インストール時に.bashrcが編集されているので、ホームディレクトリに戻って再読み込みさせる。
```bash
source .bashrc
```
正しく読み込みができれば、ターミナルのプロンプトに"(base)"が挿入される。

５.以下コマンドでcondaを最新版に更新しておく。
```bash
conda update conda
```
![003_conda_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1402694/eca8fc73-e897-7d92-aee1-0c8f410f720e.png)

# 仮想環境の作成とPyGMTのインストール
PyGMT公式の[Installing GMT and other dependencies](https://www.pygmt.org/latest/install.html#installing-gmt-and-other-dependencies)に沿ってインストールを進める。

１.conda-forgeチャンネルからパッケージを取得するようにcondaを構成する。
```bash
conda config --prepend channels conda-forge
```

２.以下コマンドで、仮想環境の作成を行う。（"pygmt"の名前は任意で良いらしい…が、そのままコピったので変更しなかった）
```bash
conda create --name pygmt python=3.9 numpy pandas xarray netcdf4 packaging gmt
```

３.仮想環境のアクティベートを行う。
```bash
conda activate pygmt
```

４.PyGMTをインストールする。
```bash
conda install pygmt
```
![003_conda_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1402694/dfcb49a5-86e1-c922-685f-62c8abe31382.png)

５.PyGMTを更新する。
```bash
conda update pygmt
```

# 動作確認
簡単な動作確認の方法として、Jupyter Notebookを使用する。

１.Jupyter Notebookのインストール
```bash
pip install jupyter
```

２.Jupyter Notebookを起動する。
```bash
jupyter notebook
```
自動的にブラウザが開くか、もしくは表示されたメッセージに記載されているURLにアクセスすることでJupyter Notebookが利用可能になる。

３.開いたJupyter Notebookで[New]＞[Python3(ipykemel)]をクリック。
![004_jupyter_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1402694/023fd67b-8e37-b33f-9dc7-9ac1ab40baac.png)

４.新しいタブが開く。わかりやすいようにUntitledを変更しておく。
![004_jupyter_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1402694/0586d892-5be7-6187-c8af-6319ad4455d4.png)

５.以下のコードを入力、実行(Run)。
```python
import pygmt
pygmt.show_versions()

fig = pygmt.Figure()
fig.coast(region="g", frame=True, shorelines=1)
fig.show()
```
地図が表示されれば無事インストールされている。
![004_jupyter_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1402694/7c5d850a-bdd3-752c-855b-07672e8ef95f.png)