これだけ！ JupyterLab セットアップ手順


# Anaconda の導入
まずは、Anaconda を導入。これは、Python環境を導入するためのディストリビューションであり、Python + 関連パッケージを自動でインストールしてくれる。この中に、JupyterLab も含まれる。

各OS ごとに用意されたインストーラを利用するのが一番楽なので、それを利用する。

### ダウンロード
https://www.anaconda.com/distribution/ からダウンロード

### インストール確認
以下のディレクトリが存在することを確認。

```
/opt/anaconda3/
```

### (base) の表示について
anaconda 導入後、ターミナル上で以下の様に`(base)` と先頭に表示される様になってしまった。

```
(base) $
```
これはAnadonda 導入時に適用されるconda 環境であるbase が適用されているという意味。毎回表示されるだけで害はないが、以下で無効化することができる。

```
(base) $ conda deactive
# (base) 表記が消え、Python2系しか使えなくなる
$ 

$ conda activate
# 再度(base)表記が追加され、Python3系が使える様になる
(base) $
```


# JupyterLab
### 起動
上記Anaconda のインストール確認が完了したら、以下のコマンドを実行。

```
$ jupyter lab
```

実行すると、ブラウザが立ち上がりJupyterLab が表示される。

### 使ってみる
ショートカットについては、以下を参照。
[JupyerLab ショートカットメモ(Mac用)](https://qiita.com/wariichi/items/b2c2f5ea1dcde0e520ca)


```
.ipynb_checkpoints
```
こちらのディレクトリは、JupyterLab にて `.ipynb` ファイルを利用する際に自動生成される管理ファイルなので、.gitignore に追加推奨。

# トラブルシューティング
以下は、JupyterLab で起きたエラー解消録を残しておく。

## Error Staring Kernel
いつも通り `$jupyter lab` でJupyterLab を立ち上げた際に、以下の画面が表示された。
<img width="293" alt="スクリーンショット 2020-02-16 14.55.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38277/5925e2cb-cb4c-abb9-a6a1-8c771a284195.png">
普段表示されない画面だが、とりあえず Python3 を選択。
すると、以下のエラーが表示されてしまった。
<img width="432" alt="スクリーンショット 2020-02-16 14.55.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38277/05b13e69-9249-bf37-6e0a-98a4e1f7b8e2.png">
OK押下後、JupyterLab 場では`No Kernel`の表示がされ、各種Runが実行できない状態に。。。
<img width="601" alt="スクリーンショット 2020-02-16 14.56.17.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/38277/3c51a4ee-730c-f654-fea9-9603d3951985.png">
エラー内容は以下。

```
Error Starting Kernel
Traceback (most recent call last):
  File "/opt/anaconda3/lib/python3.7/site-packages/tornado/web.py", line 1699, in _execute
    result = await result
  File "/opt/anaconda3/lib/python3.7/site-packages/tornado/gen.py", line 742, in run
    yielded = self.gen.throw(*exc_info)  # type: ignore
  File "/opt/anaconda3/lib/python3.7/site-packages/notebook/services/sessions/handlers.py", line 72, in post
    type=mtype))
  File "/opt/anaconda3/lib/python3.7/site-packages/tornado/gen.py", line 735, in run
    value = future.result()
  File "/opt/anaconda3/lib/python3.7/site-packages/tornado/gen.py", line 742, in run
    yielded = self.gen.throw(*exc_info)  # type: ignore
  File "/opt/anaconda3/lib/python3.7/site-packages/notebook/services/sessions/sessionmanager.py", line 88, in create_session
    kernel_id = yield self.start_kernel_for_session(session_id, path, name, type, kernel_name)
  File "/opt/anaconda3/lib/python3.7/site-packages/tornado/gen.py", line 735, in run
    value = future.result()
  File "/opt/anaconda3/lib/python3.7/site-packages/tornado/gen.py", line 742, in run
    yielded = self.gen.throw(*exc_info)  # type: ignore
  File "/opt/anaconda3/lib/python3.7/site-packages/notebook/services/sessions/sessionmanager.py", line 101, in start_kernel_for_session
    self.kernel_manager.start_kernel(path=kernel_path, kernel_name=kernel_name)
  File "/opt/anaconda3/lib/python3.7/site-packages/tornado/gen.py", line 735, in run
    value = future.result()
  File "/opt/anaconda3/lib/python3.7/site-packages/tornado/gen.py", line 209, in wrapper
    yielded = next(result)
  File "/opt/anaconda3/lib/python3.7/site-packages/notebook/services/kernels/kernelmanager.py", line 168, in start_kernel
    super(MappingKernelManager, self).start_kernel(**kwargs)
  File "/opt/anaconda3/lib/python3.7/site-packages/jupyter_client/multikernelmanager.py", line 110, in start_kernel
    km.start_kernel(**kwargs)
  File "/opt/anaconda3/lib/python3.7/site-packages/jupyter_client/manager.py", line 259, in start_kernel
    **kw)
  File "/opt/anaconda3/lib/python3.7/site-packages/jupyter_client/manager.py", line 204, in _launch_kernel
    return launch_kernel(kernel_cmd, **kw)
  File "/opt/anaconda3/lib/python3.7/site-packages/jupyter_client/launcher.py", line 138, in launch_kernel
    proc = Popen(cmd, **kwargs)
  File "/opt/anaconda3/lib/python3.7/subprocess.py", line 775, in __init__
    restore_signals, start_new_session)
  File "/opt/anaconda3/lib/python3.7/subprocess.py", line 1522, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/opt/anaconda3/bin/pyt
```


 この中で、`FileNotFoundError: [Errno 2] No such file or directory: '/opt/anaconda3/bin/python': '/opt/anaconda3/bin/python'` に着目。
確認してみると、確かに `/opt/anaconda3/bin/python` は存在していなかった。代わりに`/opt/anaconda3/bin/python3.7`は存在しているので、pytnonをこのpython3.7に向けることで解消した。
具体的には、以下でシンボリックリンクを作成。

```
$ ln -s /opt/anaconda3/bin/python3.7 /opt/anaconda3/bin/python
```

どのタイミングでこれが起きるようになったかは不明だが、一旦これでJupyterLab を再起動することで、エラーは解消された。