WSL環境にJupyterLabを構築してみる

# Windows上のWindows Subsystem for Linux環境にJupyter Notebook環境を再セットアップする
試行錯誤しながらJupyter Notebook環境をWSL上に構築していましたが、行き当たりばったりでライブラリを追加したりしてごちゃごちゃになってきたのと、Jupyter Labに入れ替えたかったのでWSLからセットアップし直したメモです。
WSLの入れ替えは [Windows Subsystem for Linux(WSL)に「Ubuntu 18.04 TLS」を入れたときに最初にしたこと](https://qiita.com/nandymak/items/88e060a3f39bd50b2331) を参照ください。

入れ替えに当たってAnacondaも考えましたが、Pythonの理解を深めるためにも、pip3で一つ一つインストールしました。
Anacondaのインストーラは以下にありますが、WSL環境で動作するかは確認できていません。
https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh

# Pythonのバージョンを確認
Python2系は入っていない模様。

```terminal
nandymak@windows10:~$ python --version
Command 'python' not found, but can be installed with:
sudo apt install python3
sudo apt install python
sudo apt install python-minimal
You also have python3 installed, you can run 'python3' instead.
nandymak@windows10:~$ python3 --version
Python 3.6.7
nandymak@windows10:~$
```

pipは入っているかを確認。

```terminal
nandymak@windows10:~$ pip -v
Command 'pip' not found, but can be installed with:
sudo apt install python-pip
nandymak@windows10:~$ pip3 -v
Command 'pip3' not found, but can be installed with:
sudo apt install python3-pip
```
# pip3をインストール

```terminal
nandymak@windows10:~$ sudo apt install -y python3-pip
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  binutils binutils-common binutils-x86-64-linux-gnu build-essential cpp cpp-7 dh-python dpkg-dev fakeroot g++ g++-7 gcc gcc-7 gcc-7-base libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan4 libatomic1 libbinutils libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot
  libfile-fcntllock-perl libgcc-7-dev libgomp1 libisl19 libitm1 liblsan0 libmpc3 libmpx2 libpython3-dev libpython3.6-dev libquadmath0 libstdc++-7-dev libtsan0 libubsan0
  linux-libc-dev make manpages-dev python-pip-whl python3-crypto python3-dev python3-distutils python3-keyring python3-keyrings.alt python3-lib2to3 python3-secretstorage
  python3-setuptools python3-wheel python3-xdg python3.6-dev
提案パッケージ:
  binutils-doc cpp-doc gcc-7-locales debian-keyring g++-multilib g++-7-multilib gcc-7-doc libstdc++6-7-dbg gcc-multilib autoconf automake libtool flex bison gdb gcc-doc
  gcc-7-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan4-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libmpx2-dbg libquadmath0-dbg
  glibc-doc bzr libstdc++-7-doc make-doc python-crypto-doc gnome-keyring libkf5wallet-bin gir1.2-gnomekeyring-1.0 python-secretstorage-doc python-setuptools-doc
以下のパッケージが新たにインストールされます:
  binutils binutils-common binutils-x86-64-linux-gnu build-essential cpp cpp-7 dh-python dpkg-dev fakeroot g++ g++-7 gcc gcc-7 gcc-7-base libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan4 libatomic1 libbinutils libc-dev-bin libc6-dev libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot
  libfile-fcntllock-perl libgcc-7-dev libgomp1 libisl19 libitm1 liblsan0 libmpc3 libmpx2 libpython3-dev libpython3.6-dev libquadmath0 libstdc++-7-dev libtsan0 libubsan0
  linux-libc-dev make manpages-dev python-pip-whl python3-crypto python3-dev python3-distutils python3-keyring python3-keyrings.alt python3-lib2to3 python3-pip
  python3-secretstorage python3-setuptools python3-wheel python3-xdg python3.6-dev
アップグレード: 0 個、新規インストール: 57 個、削除: 0 個、保留: 0 個。
85.2 MB 中 81.4 MB のアーカイブを取得する必要があります。
この操作後に追加で 247 MB のディスク容量が消費されます。
(省略)
nandymak@windows10:~$
```
pip3のバージョンを確認。

```terminal
nandymak@windows10:~$ pip3 --version
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)
```
念のため、pipもインストール

```terminal
nandymak@windows10:~$ sudo pip3 install -U pip
```
pip3とpipは同一のようです。

```terminal
nandymak@windows10:~$ diff -s `which pip3` `which pip`
ファイル /usr/local/bin/pip3 と /usr/local/bin/pip は同一です
nandymak@windows10:~$ 
```
# Jupyter Labのインストール手順
Jupyter Labとextensionをインストールします。

```terminal
nandymak@windows10:~$ sudo -E pip install jupyterlab widgetsnbextension
```

以下のライブラリが追加されました。
* Send2Trash-1.5.0
* backcall-0.1.0
* bleach-3.1.0
* decorator-4.4.0
* defusedxml-0.6.0
* entrypoints-0.3
* ipykernel-5.1.1
* ipython-7.5.0
* ipython-genutils-0.2.0
* jedi-0.13.3
* jupyter-client-5.2.4
* jupyter-core-4.4.0
* jupyterlab-0.35.6
* jupyterlab-server-0.2.0
* mistune-0.8.4
* nbconvert-5.5.0
* nbformat-4.4.0
* notebook-5.7.8
* pandocfilters-1.4.2
* parso-0.4.0
* pexpect-4.7.0
* pickleshare-0.7.5
* prometheus-client-0.6.0
* prompt-toolkit-2.0.9
* ptyprocess-0.6.0
* pygments-2.4.2
* python-dateutil-2.8.0
* pyzmq-18.0.1
* terminado-0.8.2
* testpath-0.4.2
* tornado-6.0.2
* traitlets-4.3.2
* wcwidth-0.1.7
* webencodings-0.5.1
* widgetsnbextension-3.4.2

# 機械学習関連で使用するライブラリを追加

実際、可視化や機械学習する上では不足がありそうですが、基本的なライブラリをインストールします。
## 基本的なパッケージ
* NumPy : 数値計算ライブラリ（ベクトル計算・行列計算）
* SciPy : 科学計算ライブラリ（NumPyも自動で入ります）
* matplotlib : グラフ描画ライブラリ
* pandas : データフレームを扱うためのライブラリ

## 機械学習用パッケージ
* scikit-learn : 基本的な機械学習

## Deep Learning フレームワーク
* TensorFlow : Google謹製、awsはMXNet推しらしい
* Keras : 主にTensorFlowを使いやすくする


```terminal
nandymak@windows10:~$ sudo pip install numpy scipy pandas matplotlib scikit-learn tensorflow keras plotly_express
```

以下のライブラリが追加されました。
* absl-py-0.7.1
* astor-0.8.0
* cycler-0.10.0
* gast-0.2.2
* grpcio-1.21.1
* h5py-2.9.0
* joblib-0.13.2
* keras-2.2.4
* keras-applications-1.0.8
* keras-preprocessing-1.1.0
* kiwisolver-1.1.0
* markdown-3.1.1
* matplotlib-3.1.0
* mock-3.0.5
* numpy-1.16.4
* pandas-0.24.2
* patsy-0.5.1
* plotly-3.10.0
* plotly-express-0.3.0
* protobuf-3.8.0
* pyparsing-2.4.0
* pytz-2019.1
* retrying-1.3.3
* scikit-learn-0.21.2
* scipy-1.3.0
* statsmodels-0.9.0
* tensorboard-1.13.1
* tensorflow-1.13.1
* tensorflow-estimator-1.13.0
* termcolor-1.1.0
* werkzeug-0.15.4

# ショートカットからJupyterLabを起動する
以下の様なショートカットを作成する。
![jupyterLab.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223848/4491a9d3-fc38-d317-00aa-b9f837bcb7c1.jpeg)


* リンク先＝```C:\Windows\System32\wsl.exe jupyter lab --no-browser```
* 作業フォルダー＝```C:\Jupyter``` など(初期にNotebook等が表示される場所)

設定がうまく行けば以下の通り表示されます。

![](https://i.imgur.com/YDPlO5u.jpg)


# Proxyを超える
私の環境ではProxyで外部へのアクセスがうまく行かなかったので以下のQiitaの記事を参考に以下の設定を追加しました。

```terminal
nandymak@windows10:~$ vi ~/.ipython/profile_default/startup/00-startup.py

import sys,os,os.path
os.environ['FTP_PROXY']="http://<userid>:<password>@proxy.example.com:80"
os.environ['HTTP_PROXY']="http://<userid>:<password>@proxy.example.com:80"
os.environ['HTTPS_PROXY']="http://<userid>:<password>@proxy.example.com:443"
```

# 参考資料

#### 
* [機械学習のためのPython環境構築 2018.05](https://qiita.com/k_harada/items/7025c9fb01588ed073f7)
* [Jupyter Notebook を Proxy サーバ配下で使う場合の設定](https://qiita.com/dyoshiha/items/96dea238afe7bf0acd1b)
* 
---