WSL2+VScode+PoetryでJupyter Notebook+geemapの環境構築
自分の解析環境と本記事の執筆背景
普段、WSL2+VScode+Pyenv+Poetryでコードを書いています。
その環境下でGoogle Earth Engine(GEE)を使おうとしたのですが、便利なパッケージであるgeemapを利用するにはJupyter Notebookが必須となります。ただ、自分の環境下においてVScode上でJupyter Notebook+geemapを動かすには少し手こずりました。
そのため、備忘録がてら本記事を執筆することにしました。最近、衛星画像の解析が流行り始めていて、PythonでGEEを扱いたい方も増えると思いますので、そういう方に参考になると嬉しいです。
手順(.venvで仮想環境を構築するのがキモらしい。)
これからVScodeでJupyter Notebook+geemapを動かすまでの手順を紹介するのですが、目次にも記載した通り、「.venv」で仮想環境を構築し、そこでJupyter Notebookを動かすのがキモらしいです。具体的には、以下3点となります。
- Poetryの設定変更
- 「.venv」フォルダの作成
- 仮想環境での作業
※WSL2+VScode+Pyenv+Poetryの解析環境は既に構築されていることを前提としています。
1.VScodeのJupyter拡張機能をインストール
Jupyter Notebookを使いたいので当たり前になりますが、まずはVScodeのJupyter拡張機能をインストールします。僕のはインストール済なので、そういう表示になっています。
2.新規プロジェクトの作成
VScodeのターミナルから新規プロジェクトを作成し、そのフォルダ下に移動します。
$ mkdir new_project
$ cd new_project
3.仮想環境の作成
まずは、新規プロジェクトをPoetry配下に入れ、pyproject.tomlファイルを生成します。
$ poetry init
次に、「.venv」フォルダが作られるよう、以下の方法でPoetryの設定を変更します。
$ poetry config virtualenvs.in-project true
$ poetry config virtualenvs.create true
これでPoetryであっても「.venv」フォルダを作成できるようになります。ここは重要なポイントです。
Poetryの設定変更ができたら、新規プロジェクトの下で「.venv」フォルダを作成します。Pythonの3.12.0を入れていますが、好きなバージョンを選択してください。
$ poetry env use 3.12.0
上手くいくと、以下の状態になると思います。
3.仮想環境に入ってJupyter Notebookのファイルを作成
Poetryを使う場合は仮想環境に入ってコードを実行するということはしないと思いますが(プロジェクトのディレクトリ下でpoetry run python XXX.pyで動くので)、Jupyter Notebookを使う場合には仮想環境に入る必要があります。
なので、新規プロジェクト(new_project)のディレクトリ下で仮想環境に入ります。
$ code .
そうすると、新規プロジェクト(new_project)の新規ウィンドウが開きます。Jupyter Notebookは、ここで動かすことになります。
早速、「File(ファイル)」→「New File(新規ファイル)」から、Jupyter Notebookの新規ファイルを作成しましょう。
4.カーネルの選択
Jupyter Notebookの新規ファイルが作成できたら、まずはカーネルを選択しましょう。右上の「Select Kernel」をクリックし、「Python Environments...」を選択します。
選べるPythonの環境が表示されますので、今回作成した「.venv」下のPythonを選択します。
上手くいけば、先ほどの「Select Kernel」が以下のようになります。
5.geemapのインストール~動作確認
ここでgeemapをインストールします。
$ poetry add geemap
インストールが完了したら、geemapをインポートしてみます。そうすると、ipykernel packageのインストール要求が表示されるので、その指示に従ってインストールします。
インストール完了次第、geemapのインポートが実行されます。ただ、以下のようなエラーが発生すると思います。
Please restart Jupyter kernel after installation if you encounter any errors when importing geemap.
------------------------------------
(エラーの表示)
ModuleNotFoundError: No module named 'pkg_resources'
pkg_resourcesのパッケージがインストールされていないことに起因するエラーですが、この対応としては「setuptools」パッケージの追加となります。なので、「setuptools」のパッケージを追加します。
$ poetry add setuptools
パッケージの追加が終われば、再度、geemapのインポートを行ってみましょう。エラーが発生しなければ、無事にgeemapのインポートが実行されます。
これでも先ほどと同様のエラー(No module named 'pkg_resources')が発生している場合には、一度、VScodeを閉じて、再度、仮想環境に入り直してgeemapのインポートを行ってください。
6.Mapが表示されない問題への対応
これで完了かと思いきや、そのままgeemapを使おうとすると、なんとMapが表示されない問題が発生します。
その問題が発生した場合には、仮想環境の入り直しをしてください。そうすれば、無事にMapが表示される状態になります。
終わり
これで無事に、WSL2+VScode+Poetryの環境下でJupyter Notebook+geemapが使えるようになりました。geemapは非常に便利なパッケージなので最大限に活用していきましょう。
参考
Poetry でライブラリを管理しながら Jupyter notebook を VSCode で使う
Poetryを使ったPython環境のセットアップ手順(2023年2月時点)
Discussion