【Windows】VS Code + Anaconda で Python の開発環境を用意する

## はじめに

[【世界で 18 万人が受講】実践 Python データサイエンス](https://www.udemy.com/course/python-jp/)の導入部分で、開発環境として [Anaconda](https://www.anaconda.com/products/individual) + [Jupyter Notebook](https://jupyter.org/)を推薦している。
しかし、慣れ親しんだ VSCode で開発を行いたいため、VSCode + Anaconda で開発環境を整えた。

古い記事だと[Anaconda Navigator から VSCode アプリをインストールしている](https://docs.anaconda.com/anaconda/user-guide/tasks/integration/vscode/)が、2021/01 時点の Anaconda では VSCode の Python Extension から Anaconda を指定できるため、必要なさそう。

尚、以下を参考にした。

- [Using Python environments in VS Code](https://code.visualstudio.com/docs/python/environments)
- [Python for Visual Studio Code](https://docs.anaconda.com/anaconda/user-guide/tasks/integration/python-vsc/)

## 環境

```log
Windows: バージョン 10.0.18363 ビルド 18363
Anaconda: Anaconda3-2020.11
VSCode: Version 1.52.1
```

## 手順

### 1. [Anaconda](https://www.anaconda.com/products/individual#Downloads)のインストール

2021/01 時点で Python3.8 を使用している。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110860/a6bc38ad-74cc-e98b-7cf1-9af6a33427ea.png)

### 2. [Python Extension](https://marketplace.visualstudio.com/items?itemName=ms-python.python)のインストール

`Ctrl + P` > `ext install Python`

### 3. インタプリタの設定

1. 適当なディレクトリを VSCode で開き、`.py`のファイルを作成する
1. `Ctrl + Shift + P` > `Python: Select Interpreter` > `Python 3.X.X YY-bit(conda)`
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110860/7f99f382-a82b-6547-1d51-3369938bb773.png)
1. このようになれば OK
   - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110860/3a4302d0-b8d8-f60f-be4e-8b90c5f276e9.png)

### 4. ターミナルで Python を実行する

1. ファイルに以下のように入力

   ```py
   import sys
   print(sys.version)
   ```

2. Python を実行
   - まだターミナルを立ち上げてない場合
     - `Ctrl + Shift + P` > `Python: Run Python File in Terminal`
   - 既にターミナルを立ち上げている場合、上で設定したインタプリタで Python を実行するため、新しいターミナルを用意する
     - `Ctrl + Shift + P` > `Terminal: Create New Integrated Terminal`
     - `Ctrl + Shift + P` > `Python: Run Python File in Terminal`
3. Terminal に `3.8.5 (default, Sep 3 2020, 21:29:08) [MSC v.1916 64 bit (AMD64)]`と表示される

※Windows 環境の場合、Anaconda はデフォルトで PATH を通さないため、`conda activate base`が失敗する。そのため、[以下の方法](#ターミナルで-conda-コマンドが使えない)で conda コマンドが実行できるようにする。

### 5. デバッグ

参考: [Python debug configurations in Visual Studio Code](https://code.visualstudio.com/docs/python/debugging)

#### launch.json の作成

`Ctrl + Shift + P` > `Debug: Open launch.json` > `Python` > `Python File`

```json
{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python: Current File",
      "type": "python",
      "request": "launch",
      "program": "${file}",
      "console": "internalConsole"
    }
  ]
}
```

`Ctrl + Shift + P` > `Debug: Start Debugging` でデバッグ可能になる。

### 6. conda 環境の追加

参考: [Conda environments](https://code.visualstudio.com/docs/python/environments#_conda-environments)

`conda create`する際、 `python=X.X`でインタプリタを指定すると、指定したインタプリタを VSCode で使えるようになる。

1. `conda create`で任意の環境を作成する

   - 上述した通り、インタプリタを指定する必要がある。指定しない場合、作成したインタプリタが`Python: Select Interpreter`に出てこない(手動で activate は可能)
     ```sh
     conda create -n env-01 python=2.7
     ```

2. `Ctrl + Shift + P` > `Python: Select Interpreter` > `Python 2.7.X YY-bit(conda)` を選択
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110860/71f3c87b-fcaf-0272-419a-550c46335dcc.png)

## トラブルシューティング

### ターミナルで conda コマンドが使えない

```powershell
PS C:\workspace> conda activate base
conda : 用語 'conda' は、コマンドレット、関数、スクリプト ファイル、
または操作可能なプログラムの名前として認識されません。
名前が正しく記述されていることを確認し、パスが含まれている場合は
そのパスが正しいことを確認してから、再試行してください。
発生場所 行:1 文字:1
+ conda activate base
+ ~~~~~
    + CategoryInfo          : ObjectNotFound: (conda:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
```

上記のエラー解消のため、Powershell で conda コマンドが使えるようにする

#### 1. Anaconda の起動スクリプトを確認する

1. `Windows key` > `anaconda powershell` を入力
   ![anaconda.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110860/8facf858-7ce2-d07e-221e-ff512714532b.png)
2. 右クリック > `ファイルの場所を開く`
3. 右クリック > `プロパティ`
4. リンク先をコピー
   `%windir%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'C:\Users\user\anaconda3\shell\condabin\conda-hook.ps1' ; conda activate 'C:\Users\user\anaconda3' "`

#### 2. VSCode のターミナルの起動時引数に、上記の引数を渡すようにする

1. `Ctrl + Shift + P` -> `Preferences: Open Settings(JSON)` or `Preferences: Open Workspace Settings(JSON)`
2. `"terminal.integrated.shellArgs.windows"`に上記の引数を配列で指定する

```json
{
  "terminal.integrated.shellArgs.windows": [
    "-ExecutionPolicy",
    "ByPass",
    "-NoExit",
    "-Command",
    "& 'C:\\Users\\user\\anaconda3\\shell\\condabin\\conda-hook.ps1'; conda activate 'C:\\Users\\user\\anaconda3'"
  ]
}
```

参考: [Working with Anaconda in Visual Studio Code](https://stackoverflow.com/a/61402982/1513792)

## 参考

- [Using Python environments in VS Code](https://code.visualstudio.com/docs/python/environments)
- [Python for Visual Studio Code](https://docs.anaconda.com/anaconda/user-guide/tasks/integration/python-vsc/)
- [VS Code で Anaconda 環境の Python を使おう](https://qiita.com/y_a_m_a/items/b840e5efea1475fde203)
- [Python 環境構築(Anaconda + VSCode) @ Windows10 【2020 年１月版】](https://qiita.com/manamana/items/38e963ce04f24de4bbe4)

```

```