Windows 10 + Python + Poetry + pyenv-win の Visual Studio Code で Jupyter Notebook を利用

## はじめに

Visual Studio Code で Jupyter Notebook を利用する手順や、Mac で Jupyter Notebook を利用する手順は見つけたのですが、Windows 10 と Poetry と pyenv-win を組み合わせた環境での手順が見つからなかったため、この環境で Visual Studio Code から Jupyter Notebook を利用する手順をまとめてみました。

Anaconda であれば、簡単に Jupyter Notebook を利用できますが、宗教上の理由により最近は Anaconda を利用していないから、というのもひとつの理由となります。

## 環境

* Windows 10
* Powershell 7.3.9
* Python 3.11.1 + pyenv-win + Poetry
* Visual Studio Code 1.84.2

## 前提

Python 3.11.1 + pyenv-win + Poetry は下記手順で導入しています。

[Windows で Python の開発環境を構築する（Poetry と pyenv を利用）]
(https://qiita.com/kerobot/items/8b371ba51501ddc806a7)

Visual Studio Code には、拡張機能として「Python」と「Jupyter」をインストールしています。

* [Visual Studio Code の Python 拡張機能](https://marketplace.visualstudio.com/items?itemName=ms-python.python)

* [Visual Studio Code の Jupyter 拡張機能](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter)

## pyenv-win の確認と Python のグローバル設定

利用する Python のバージョンを指定（切り替え）可能とするために pyenv を利用します。

Powershell の gcm コマンドを利用して、pyenv-win の場所を確認します。

```powershell
> gcm pyenv | fl
```

pyenv-win のバージョンを確認します。

```powershell
> pyenv --version
pyenv 3.1.1
```

インストール可能なバージョンを確認します。

```powershell
pyenv install --list
```

pyenv-win を利用して global 環境の Python を設定します。

```powershell
> pyenv versions
> pyenv install 3.11.1
> pyenv global 3.11.1
> pyenv rehash
> python -V
Python 3.11.1
```

設定した Python の pip をアップグレードしておきます。

```powershell
> python -m pip install --upgrade pip
> pip -V
pip 23.3.1
```

## Poetry の確認とプロジェクトの作成と Python のローカル設定

Powershell の gcm コマンドを利用して、Poetry の場所を確認します。

```powershell
> gcm poetry | fl
```

Poetry のバージョンを確認します。

```powershell
> poetry --version
Poetry (version 1.3.2)
```

Poetry を利用してプロジェクト（プロジェクトディレクトリ）を作成します。

```powershell
> poetry new jupyter --name notes
```

作成したプロジェクトに移動します。

```powersherll
> cd jupyter
```

pyenv-win を利用して、プロジェクトの local 環境の Python を設定します。

```powershell
> pyenv local 3.11.1
> pyenv rehash
> Python -V
Python 3.11.1
```

Poetry を利用して Python 仮想環境を構築します。

```powershell
> poetry env use C:\Users\[UserName]\.pyenv\pyenv-win\versions\3.11.1\python.exe

Creating virtualenv notes in D:\Develop\Git\jupyter\.venv
Using virtualenv: D:\Develop\Git\jupyter\.venv
```

下記パッケージを追加しておきます。

```powershell
> poetry add pylint
> poetry add pandas # ここで numpy も追加されます
> poetry add sympy
> poetry add scipy
> poetry add matplotlib
```

Poetry を利用して動作を確認します。

```powershell
> poetry run python -V
Python 3.11.1
```

## Jupyter Notebook パッケージの導入

jupyter のパッケージを導入しておく必要はありません。
ipykernel パッケージが導入されていれば、Visual Studio Code の jupyter 拡張機能から利用可能となります。

## Visual Studio Code が利用する Python インタプリタの選択

プロジェクトのディレクトリで、Visual Studio Code を起動します。

```powershell
> code .
```

Visual Studio Code が利用する Python のインタプリタを選択します。

Ctrl + Shift + P でコマンドパレットを開き、python select interpreter と入力し、Python のインタプリタ環境として「.venv\\Scripts\\python.exe」を選択します。
![img01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283306/00840e2a-ef24-23c1-98de-39b7cc757a43.jpeg)

プロジェクトの .vscode ディレクトリに settings.json が作成され、下記内容となっていることを確認します。

```text
{
    "python.pythonPath": ".venv\\Scripts\\python.exe"
}
```

## Visual Studio Code からノートブックの作成

Visual Studio Code で利用するノートブックを作成します。

Ctrl + Shift + P でコマンドパレットを開き、create new jupyter と入力し、「Create: New Jupyter Notebook」を選択してノートブックを新規作成します。
![img02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283306/1bcf0c17-5293-65b0-5547-e69effdb536a.jpeg)

自動的に Python 仮想環境が起動し、ノートブックを利用できる状態となります。
![img03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283306/32601aaa-ea20-7ad3-0764-2cd0db254c82.jpeg)

## Visual Studio Code からノートブックの利用

これで Python スクリプトを実行することができます。
![img04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283306/a319e4e7-b424-bff8-2b0c-dd22de1caa8c.jpeg)

Ctrl + Enter でセルの実行、Ctrl + Shift + Enter でセルを挿入できます。

## おわりに

jupyter の導入で躓きましたが、Windows 10 の Visual Studio Code で Jupyter Notebook を利用できました。

使い慣れたエディタで、ノートブックの編集や保存などが行えるのは良いですね。
pyenv-win や Poetry を利用しているため、必要なバージョンやパッケージの組み合わせも試しやすそうです。