🌍

WSL2+VScode+PoetryでJupyter Notebook+geemapの環境構築

2024/01/08に公開

自分の解析環境と本記事の執筆背景

普段、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であっても「.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