VSCodeでのPython、Jupyter実行環境の構築方法

VSCodeでのPython、Jupyter実行環境の構築方法をまとめました。Anacondaを使っていますが、Minicondaなど他の環境でも同様に設定できると思います。

また、Pythonでデータ分析する人は、ブラウザからJupyter notebookやJupyter Labを使う方が多いと思います。そんな人にもVSCodeはお勧めです。

また、この記事は[VSCodeを使ったPythonパッケージの作り方](https://qiita.com/SolKul/items/9208163c79dc4002733c)の記事の一部です。

Anacondaがダウンロードしてあるという仮定で話を進めていきます．（Anacondaインストール時に同時にVSCodeをインストールするのではなく別途インストール）

また各ソフトのバージョン違いや、英語、日本語の違い等によって画面の表示が異なる場合もあると思います。その場合は適宜読み替えてください。

# 環境
|||備考|
|:----:|:------:|:------:|
|OS|Windows10||
|conda|4.8.3|Anaconda Promptで`conda -V`|
|Anaconda|2020.02|Anaconda Promptで`conda list anaconda`|
|Python|3.8.2||
|VSCode|1.43.2||

また、例としてKaggleのタイタニック号のデータを使うことにしますが、データはなくてもVSCodeでのPython実行環境の構築はできるので用意しなくても大丈夫です。

![00titanic_Explorer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/140e9b92-a19f-740c-3f1c-6b8270ce2625.png)

# VS Codeのインストール
[VS Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code)をインストールしてください。基本，何も考えずに[次へ]でいいと思います。

# Anacondaでの仮想環境の立ち上げ
Anaconda Promptを立ち上げ、

```bash
conda create -n 好きな環境名 python=Pythonバージョン
```

で仮想環境を立ち上げてください。  
![01create_env.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/d2c7dbb9-0016-54e7-bd2d-d90307587ead.png)

今回は環境名は`titanic`とします。

(環境を作った後、

```bash
conda info -e
```
で仮想環境の一覧が表示できるので、ちゃんと自分の環境名があるか確認してください。)

そして仮想環境を起動します。  

```bash
conda activate titanic
```

ここから必要なモジュールをインストールします。例として`pandas`をインストールしておきましょう。

```bash
conda install pandas
```

# VSCodeでPythonコードを実行してみる
ここからVS CodeでのPythonを実行してみます。スタートメニューでVSCodeと検索し、VSCodeを立ち上げてください。

流れとしては
- Pytho拡張機能をインストール
- プログラムを書く
- Python実行環境を整える
- プログラムを実行

という流れになります。順番に説明します。


## Pytho拡張機能をインストール

![07InstallPythonExtension.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/6a29adad-5ce2-8083-ddf9-2a03ef160a0b.png) 
まずVSCodeが開いたら、①左端のサイドバーからExtensionsをクリックし、②`python`と検索します。そして③Microsoft製のPytho拡張機能をインストールします。


## プログラムを書く
フォルダを開き、実際のプログラムを書きます。  


![02OpenFolder.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/4d406226-fdde-34d5-8f24-a9c1b05d8c3b.jpeg)  
VSCodeの上のメニューバーから`File`>`Open Folder`を選び、これからプログラムを作っていきたいフォルダを開きます。  

![05NewFile.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/0a110aa6-1018-841e-95a5-8c381bad35cd.png)
フォルダを開いたらテスト用のpyファイルを作ります。  

![06TestCode.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/e8ccdeaa-d1c3-7d1c-4493-8aeb12c827f2.png) 
適当なプログラムを作成します。訓練データを読み込み表示するプログラムです。  
データがない場合は

```python
print('Hello')
```
などの適当なプログラムで大丈夫ですです。このプログラムをpython上で実行してみます。

## Python実行環境を整える

### 実行環境をCommand Promptに変更する
VSCodeでの実行環境(Terminal)をCommand Promptに変更します。


![08NewTerminal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/03ad10a3-6b04-b3ec-a288-09e7d36bd4f5.png)  
次に上のメニューバーから`Terminal`>`New Terminal`を選択します。  


<!--![09NewTerminalMoza.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/588f4341-9da6-c15c-21ec-d2759cbffe29.png) -->


![Terminal.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/f621012c-6e05-ead8-7adf-ce0a3bd910a4.png)


するとウィンドウ下部にターミナルがひらきます。    

<!--![10SelectDefaultShell.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/942b12bd-5395-bb5c-7a48-ae425fbcc101.png)-->

![Select Profile.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/98047c8a-22a8-434e-160d-68bb84a4191d.png)


次にこのターミナルの右上の「+」(プラスマーク)の横の「v」のマークのプルダウンメニューから「Select Default Profile」を選択します。



![11SelectCMD.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/2735b9cb-2783-654e-76ef-564d708b44ff.png)

そうすると、上の画像のように上からターミナルの種類を選べるようになるので、「Command Proompt」を選択してください。

これはTerminalがGit BashやPowerShellのままだとPythonが実行できないから変更します。(Windowsの場合だけかもしれません)

### Pythonインタプリタを設定する。
次にPythonコードを実行するためのインタプリタ(実行環境)を設定します。

![12PythonSelectInterpreter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/c468b5fc-7823-4a7c-5267-ff17b54e22bd.png)

①`Ctrl`+`Shift`+`P`を押し、VSCodeのコマンドパレットを開き、②`python select`と検索します。そして③`Python Select Interpreter`を選択します。

![13Interpreters.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/440bf14c-927c-c171-0b78-626c59d6a678.png)
そして先程作った「好きな環境名」の環境を選択します。今回の場合は`titanic:conda`です。

![14Setting.json.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/756ccaaa-8f48-7d17-6b20-d8d0b2cf1bf9.png)
そうすると上図のようにフォルダ内に`.vscode>setting.json`という`json`ファイルが作られます。そのファイルには指定した環境の`python.exe`の場所が記載されています。

**PythonインタプリタにAnacondaの環境名が現れない**

ただ、同じように操作したとしても、PythonインタプリタにAnacondaの環境名が現れない場合があると思います。これはAnacondaのインストール場所をデフォルトから変えた場合などが考えられます。

その場合は以下の記事を参考に環境変数PATHなどを設定してください。

[VS Code で Anaconda の Python デバッグ 環境構築（Visual Studio Code）](https://blog.beachside.dev/entry/2017/12/25/000000)

また、VSCodeがPC上のPythonインタプリタを検索しきれていない場合もあるので、VSCodeを再起動して数秒待ってからもう一度`Python Select Interpreter`を選択し直すなどしてみてください。

### Pythonの実行設定を設定する

![15DebugRun.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/08923ab7-3662-c341-f1af-ed40c0126121.png)

①VSCodeでpythonコード(ここでは`test.py`)を開いた状態で、②左端のサイドバーの`Run`を選択し、③`create a launch.json file`を選択してください。

![16DebugConfig.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/73724cd7-6000-42ac-fee2-988973a71b81.png)
`Debug Configuration`で`Python File`を選択してください。

![17LaunchJson.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/3b8c21b4-ce1a-6550-c3a6-476e5adaf461.png)
そうすると上図のようにフォルダ内に`.vscode>launch.json`という`json`ファイルが作られます。このファイルはPythonの実行設定が記載されています。


## プログラムを実行する
![18SelectTestpy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/712b174e-ec07-e542-7d1c-e95751b7919b.png)
実行したいコード(ここでは`test.py`)を開いた状態で、`F5`キーを押すことでコードが実行できます。

![19DebugError.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/f43a5c42-110f-1acd-1264-39a61074ef6b.png)
ただ初回の一回の実行は上図のようにエラーになってしまうと思います。

![20StopDebug.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/7fb2176f-03d0-394d-ddbc-935d7fac727c.png)
その場合は実行したときに現れる上図のようなボタンの赤い四角のボタン(Stop)をクリックし、実行をストップしてください。

![21ActivateEnv.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/8f4e0ff8-d2dc-61a0-6a81-7bb1aef838c7.png)

実行を止めると、上図のように、環境が自分の環境(今回は`titanic`)に切り替わることがわかります。

![22SuccessRun.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/d5c2f8e2-64f2-1e22-f8f4-0a96c1af6596.png)
この状態で再度`F5`キーを押すと、上図のようにコードが実行でき、訓練データの中身が出力されました。

設定ファイルが作られ設定が完了したので、これ以降はVSCodeで`F5`キーを押すだけでPythonを実行できるようになります。

# デバッグの活用
VSCodeのPython実行には様々な機能があります。

![23BreakPoint.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/b8f34803-14d2-0d32-5cd8-3737f103f4e6.png)
上図のように訓練データをの形状を表示するように`test.py`を書き換えます。そして`print(train_shape)`となっている6行目で`F9`キーを押します。そうすると、この行の左端に赤い点が表示されます。これを**ブレークポイント**といいます。そしてこの状態で`F5`キーを押して実行すると、

![24Debug.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/173c04b3-99f4-6949-169a-6bfdcfa2aae9.png) 
上図のように6行目で実行が一時停止し、その時宣言されている変数(ここでは`train_shape`)が左のサイドバーに表示されています。このようにブレークポイントを用いることで、プログラムのバグ取り(=**デバッグ**)が捗ると思います。

他にも様々な機能があるので、下の記事などを読んで、各自調べてみてください。

[VS CodeでPythonコードのデバッグも楽々！！ (1/4)](https://www.atmarkit.co.jp/ait/articles/1806/05/news023.html)

# Jupyter Notebookの実行
ただ、データ分析する際は、データの可視化がしやすいJupyter Notebookを使うことが多いと思います。実はVSCodeではJupyterも実行することができます！


![30InstalJupyter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/1bd6f16b-84ca-9035-629c-4e5ad8e88cd2.png)


```bash
conda install jupyter
```

まず、Anaconda Promptで自分の環境(今回は`titanic`)にJupyterをインストールします。



![31SelectInterpreterJupyter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/8825f216-e9ac-bb9f-30d8-9c9c2e4d9942.png)

そしてVSCodeで①`Ctrl`+`Shift`+`P`を押し、VSCodeのコマンドパレットを開き、②`python select interpreter`と入力します。そして③`python select interpreter to start jupyter server`を選択します



![13Interpreters.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/440bf14c-927c-c171-0b78-626c59d6a678.png)
そして先程と同様に「好きな環境名」(今回の場合は`titanic:conda`)の環境を選択します。

![32CreateIpynb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/b993d40f-77e0-b2ce-670e-9ebc45924872.png)
そしてJupyterを実行するために`ipynb`ファイルを作成します。

![33JupyterUpperRight.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/276baba2-8a0d-56bb-6fb9-d1ddb08f4f55.png)
この`ipynb`ファイルを開いたときに、右上の環境名が指定した環境になっているか確認してください。別の環境名になっていた場合はここをクリックし再度環境を指定し直してください。

![34RunJupyter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466677/9e9a612f-bd84-1621-0eb2-ebaf9f3b7215.png)
これでJupyterも実行できるようになりました。

ただ、VSCodeのJupyterは不安定で、動かないことも多いです。その場合はいつものように、ブラウザからJupyterを使ってください。

# 終わりに

ここまで長々と説明してきましたが、正直ただ単にこれだけだとデータ分析にVSCodeを使うメリットは少ないように思います。

実際、Jupyter Notebookでもnbextensionsのvariable inspector等でも同じことはできるからです。

[VSCodeを使ったPythonパッケージの作り方](https://qiita.com/SolKul/items/9208163c79dc4002733c)で説明する、Pythonのパッケージ化と組み合わせると、様々なメリットが見えてきます。こちらの記事もよろしくおねがいします。