PyGMTをAnacondaに入れて若干躓いた話

目次

新しいラップトップPCにAnacondaで環境を作っている時に生じた問題
PyGMTで描画が上手くいかない…」

無理やり感はあるけど何とか解決.

問題

Anacondaのbase環境で立ち上げたJupyterLabから,非base環境のghostscriptを動かせない. なお,当該非base環境のIPythonカーネルは正しく登録済みで,notebookの環境を正しく選択.

import pygmt

fig = pygmt.Figure()
fig.coast(region=[-69, -68, 43.75, 44.75], shorelines=True)
fig.show()

=> GMTClibErrorが返ってきた

psconvert [ERROR]: Cannot execute Ghostscript (gs).
Traceback (most recent call last):  
...
GMTCLibError: Module 'psconvert' failed with status code 79:
psconvert [ERROR]: Cannot execute Ghostscript (gs).

ちなみに,非base環境で立ち上げたJupyterLabだと普通にghostscriptが動く..

環境

  • WSL2 (Windows Subsystem for Linux): Ubuntu 22.04.2
  • Anaconda v2023.03 (Python 3.10)

セットアップ

Anacondaのbase環境以外にpygmtという環境を作成して,JupyterLab上でgmtの図を描画したい. pygmt環境の作成方法は次の通り.

  • ライブラリのインストール
    mamba create --name pygmt python=3.11 numpy pandas xarray netcdf4 packaging gmt
    mamba activate pygmt
    mamba install jupyter
    mamba install pygmt -c conda-forge
  • 環境変数の設定
    export GMT_LIBRARY_PATH=$HOME/anaconda3/envs/pygmt/lib >> ~/.bashrc
    source ~/.bashrc
  • IPythonカーネルの追加
    mamba activate pygmt
    ipython kernel install --user --name pygmt

baseはPython 3.10系だが,pygmtはPython 3.11系で環境構築.

解決法

  • base環境にもghostscriptをインストール

IPythonカーネルは正しく設定できているのに, baseで立ち上げたJupyterLabからpygmt環境のコマンドが通らないという問題らしい. でも,

import pygmt

は正しく通っているから(baseにPyGMTは入れていない),恐らくターミナルがbase環境のままなんだろう.

ということで,base環境にもghostscriptをインストールすると,エラーが消え,セル下に図が描画できた. これはAnacondaかJupyterLabの問題だと思うので,これ以上は踏み込まないことにしよう…

まとめ

  • base環境で立ち上げたJupyterLabは,非base環境のコマンドが使えない場合がある
  • baseにも同じコマンドを使えるようにインストール,もしくはPATHを設定しておくと使える(当たり前)

# 前回セットアップしたときはどう回避したんだろう?覚えてないな…