Jupyter NotebookをWSLに構築

Jupyter経由でPythonが使いたくなり，
自マシンWindows 10のWindows Subsystem for Linuxに構築してみました．

## 概要

### PCスペック

- Windows 10 **Home** 1809

### 導入するもの

- Windows Subsystem for Linux
- Ubuntu 18.04 LTS
  - Python3
  - pip3
  - jupyter
  - jupyter-notebook

## Windows Subsystem for Linuxを有効に

コントロール パネル\すべてのコントロール パネル項目\プログラムと機能
↓
Windowsの機能の有効化または無効化

![Windowsの機能の有効化または無効化](https://qiita-image-store.s3.amazonaws.com/0/232453/5cbce242-db34-984a-818d-61128ecf9862.png)

再起動すると有効になります．

## Ubuntuの導入

スタートメニュー > Microsoft Store
今回はUbuntu 18.04 をインストールします．

![Microsoft Store Ubuntu 18.04](https://qiita-image-store.s3.amazonaws.com/0/232453/a0160611-ae0a-10fe-27e4-e4e6b88b4c93.png)

## Ubuntuの設定

まず，スタートメニューからUbuntuを起動します．
スタートメニュー > Ubuntu

さらにユーザー名とパスワードを設定します．

## パッケージのアップデート

まず，リポジトリを日本のものへ変更します

```shell
$ sudo sed -i -e 's%http://.*.ubuntu.com%http://ftp.jaist.ac.jp/pub/Linux%g' /etc/apt/sources.list
```

つぎに，updateとupgradeを実行します．

```shell
$ sudo apt update
$ sudo apt upgrade
```

## pipの導入

pipを導入します．
Python(Python3)は既にインストールされています．

```shell
$ sudo apt install python3-pip
```

さらに，Pythonのパッケージを更新します．

```shell
$ sudo -H pip3 install -U pip 
```

## Jupyterの導入

pipを用いてJupyterを導入します．

```shell
$ sudo -H pip3 install Jupyter
```

## 起動テスト

試しに起動してみます．

```shell
$ jupyter notebook
```

エラー！
起動しません．

```shell
Error executing Jupyter command 'notebook': [Errno 2] No such file or directory
```

## jupyter-notebookの導入

[Stack overflowの同様の問](https://stackoverflow.com/questions/42648610/error-when-executing-jupyter-notebook-no-such-file-or-directory)からいくつか試しました．

- PATHの追加 => エラー変らず
  - `export PATH=$PATH:~/.local/bin/`
- ipythoのインストール => エラー変らず
  - `pip3 install "ipython[all]"`
- jupyterの再インストール => エラー変らず
  - `pip3 install --upgrade --force-reinstall --no-cache-dir jupyter`

結局うまく行ったのは以下でした．

```shell
$ sudo -H apt install jupyter-notebook
```

```shell
$ jupyter notebook
```

ブラウザでもアクセスできました．
`http://localhost:8888/`

## jupyter-notebookの設定

ログイン用にパスワードを設定します．
デフォルトではアクセストークンを発行しますが，コピペするのも面倒なので．

```shell
$ jupyter notebook --generate-config
$ jupyter notebook password
```

![jupyter ログイン画面](https://qiita-image-store.s3.amazonaws.com/0/232453/d0ba4059-66ea-0f4e-0d79-a65f2462fad5.png)

パスワードは暗号化され`~/.jupyter/jupyter_notebook_config.json`に保存されます．

## 起動ショートカットの作成

いちいちUbuntuを立ち上げてJupyterを起動するのも面倒なので，
Windows上にショートカットを作成します．

リンク先：`C:\Windows\System32\wsl.exe jupyter notebook --no-browser`
作業フォルダー：初期ディレクトリ(e.g. `%USERPROFILE%\jupyter`)

初期ディレクトリはWindows上の表現でOKです．
ショートカットならアイコンを[Jupyterのもの](https://github.com/jupyter/design/tree/master/logos/Favicon)に設定できます．

## Jupyterの起動

作成したショートカットを開きます．

![jupyter console](https://qiita-image-store.s3.amazonaws.com/0/232453/95be2f90-67bd-3351-e226-4d9efda29434.png)

ブラウザで`http://localhost:8888/`へアクセスし，ログインします．
![jupyter ログイン画面](https://qiita-image-store.s3.amazonaws.com/0/232453/90209f89-c11a-b472-8e2a-f7daf4909fe5.png)

NotebookをPython 3にて新規作成できます．

![jupyter untitled notebook](https://qiita-image-store.s3.amazonaws.com/0/232453/62a0cfa4-acda-53a4-fe23-ae91927d8033.png)


## 参考

- [Windows Subsystem for Linuxをインストールしてみよう！ - Qiita](https://qiita.com/Aruneko/items/c79810b0b015bebf30bb)
- [JupyterでHello Worldするまでの長い道のり - Qiita](https://qiita.com/arachan@github/items/1ab490cbf48efff58a38)
- [python 3.x - Error when executing \`jupyter notebook\` (No such file or directory) - Stack Overflow](https://stackoverflow.com/questions/42648610/error-when-executing-jupyter-notebook-no-such-file-or-directory)