Anaconda環境をVSCodeで使う最小構成

Pythonで遊んでみようと思って、有名なJupyter NotebookかVSCodeのどちらをメインに使おうか考えていたら、こちらの記事に出会った。

https://qiita.com/386jp/items/f023de9457c99b964a85

心惹かれたのは、
* .pyもJupter Notebookのように扱えること
* .ipynbはgitで管理できなくても、.pyならgitで管理できること

# 環境
* Windows 11
* 元々使っていた VSCode
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/8440e9b2-abb2-68a2-4019-fba9901e5f77.png)

この環境から、Pythonのインストールを含めた環境構築を行う。
ちなみに、Powershell上で
`python`
と打つとMicrosoft Storeがポップアップするが、このインストールは必要ない。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/3de4bc51-8af5-a15b-75bf-2b792a145f07.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/61ad560b-af98-58f4-9d6b-5b4a750212d0.png)

# 結論

1. Anacondaをインストール。インストール時に、Pathの設定はしない
1. Anaconda Promptなどで仮想環境を構築
1. Anaconda Navigatorから接続したい仮想環境を選択
1. Anaconda NavigatorからVSCodeを起動

※VSCode上でコードを走らせる環境の接続先は変更できるが、パッケージのインストールなど、環境自体の変更はAnaconda Navigatorで選択していたものに対してしかできない。
※Windowsのスタートメニューから開いたVSCodeではどの環境についてもパッケージのインストールなどはできない。コードの実行はできる。

# Anacondaのインストール

https://www.anaconda.com/products/distribution

の
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/5129d75c-85a2-966c-9ad7-95a846355061.png)

から、Anaconda3-2022.10-Windows-x86_64.exeをダウンロード&実行。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/b983c00f-c90e-4710-f5af-062e3f51dc6a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/fae4ae08-0a5e-93e5-c6cc-a44300c44640.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/b323f86f-cc16-d62f-fb34-84bf480c6fe0.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/1e961f8a-1572-94ce-64ba-a04711c542cb.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/241047a4-7821-a28e-3736-5ad55eba96c2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/d94b8cdf-6890-e4bc-eca0-30be9be21242.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/2c514951-ffd7-c6ab-e116-650a9b18cf38.png)

ウェブページを開く最後のチェックマークを外してFinish
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/62b4a426-c910-f006-401e-926553d19f46.png)

Windowsのスタートメニューに anaconda の各ソフトが表示されるようになった。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/99e47909-43ce-3e26-ba01-1e696d6630af.png)

# VSCodeに接続せず、単純にAnacondaを使ってみる

Anaconda Navigatorを起動。
新しいバージョンが出ているらしいのでUpdate

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/d31cf9eb-18a3-329a-fbee-d28782bf749f.png)

Anaconda Navigatorがbusy状態だといわれるが、Yesで終了
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/bacf396a-284c-41f5-25c4-0d055500f5d4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/85e2335b-9127-0498-16a7-ef62e9b5169c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/a752afa6-eeb1-3471-99ef-b2a9d3e3bb75.png)

インストールが終わると Navigator を起動するか聞かれるので、Launchをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/eda710eb-00e0-41cf-7b14-60cbfe8f6f71.png)

起動したNavigatorの様子。Jupyter Notebookを開いてみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/6a1e9a8f-f65a-ecc6-9ca2-e9bc758a7df4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/a4db4ade-e792-a3e8-8448-f61de3095c0b.png)

右上のNewからPython3を選択して、新規スクリプトを作ってみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/43c310c4-441d-5437-f4d3-6b0e75e2f3d9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/baa564d7-0454-6b44-a129-e395143dd433.png)

```
import sys
sys.version_info
```
をはじめのセルに記入して実行。
Pythonのバージョンが3.9.13であることがわかる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/88e0ad97-6cff-407b-9b9d-06941fd2086b.png)

# Anaconda Promptで仮想環境を作ってみる

```
conda env list
```
で存在する環境のリストが得られる。初期状態ではbaseしか存在しなく、
`python`を読み出すことで、そのバージョンが先ほども表示された3.9.13であることがわかる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/d1c9740a-43ec-687f-c516-0a75d2e35577.png)

それでは以下のコマンドで仮想環境を構築する。
```
conda create --name <仮想環境の名前> python=<指定バージョン> <インストールするパッケージ?>
```
今回の設定はこのよう。
```
conda create --name env310 python=3.10 numpy
```
※ python=3.5では後々の、VSCodeでinteractive-1の接続先を3.5に変更する際にwin32apiをインストールできないというエラーが出たため、3.10にしている。ほかのバージョンは試していない。

ダウンロードやインストールされるパッケージが表示され、
実行するかどうかが`Proceed ([y]/n)?`で聞かれる。yを打つ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/c277c485-678a-c6bb-0c51-0dfca2025eef.png)

改めて`conda env list`で環境を確認すると、env310が追加されている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/89468c24-c90d-070e-edce-9c5b6f34a9b5.png)

`conda activate env310`で仮想環境に接続できる。
`conda env list`の*印の位置も変更されている。
pythonを起動すると、バージョンが指定した3.10.Xになっていることが確認できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/9bcab506-4c2f-d481-8df8-08bc262f2d9c.png)

# VSCode上でスクリプトを指定した仮想環境の上で実行する

Anaconda Navigatorではなく、windowsのスタートメニューからVSCodeを開き、適当なフォルダ(今回は`D:\python-test`)でターミナルを開いて、`conda`を呼び出す。
Pathが通っていないと怒られる。
```
PS D:\python-test> conda
conda : 用語 'conda' は、コマンドレット、関数、スクリプト ファイル、または操作     
可能なプログラムの名前として認識されません。名前が正しく記述されていることを確     
認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してく     
ださい。
発生場所 行:1 文字:1
+ conda
+ ~~~~~
    + CategoryInfo          : ObjectNotFound: (conda:String) [], CommandNotFo      
   undException
    + FullyQualifiedErrorId : CommandNotFoundException

PS D:\python-test>
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/d44aab1d-19c2-09cf-8242-4b48ada8218d.png)

Anaconda NavigatorからVSCodeを起動する。すると、CondaへのPathが通っている。
これ以降はすべてAnaconda NavigatorからVSCodeを起動する。
VSCodeで`conda env list`を実行すると、先ほど作った`env310`が表示される。
しかし先ほどのAnaconda Promptと異なるのは、先頭に(base)が書かれていないことである。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/5d05aa41-756b-d222-b2f5-675f99f0f11d.png)

```
conda activate env310
conda env list
```
を実行しても、`env310`環境に移行したように思える出力は得られない。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/7f8ad5d9-f755-ed16-3268-624d36ae0f17.png)

とりあえず、testcode.pyを作ってみる。
`#%%`でJupyter Notebookのようになると聞いていたが、ならない。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/4204be50-642f-f396-0fdb-7ade76cdb2a5.png)

デバックなしで実行しようとしても、拡張機能のインストールを求められ、実行することができない。
どうやら拡張機能のインストールはどうしても必要らしい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/1be1130b-20dc-b090-5032-eee7a938f99a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/01918bc1-b8df-f91c-f170-397531febd40.png)

だからMicrosoft純正のPythonをインストールする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/9472ca68-0b04-6cbd-4f45-5dc5c194f336.png)

すると一緒に
JupyterやPylanceという拡張機能もインストールされた。
一緒にインストールするならそう書いてくれればいいのに。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/ee750ba0-99f0-62cb-bb26-c387734dc5c5.png)

ただし、変化は劇的で、`#%%`の上に、`セルの実行`と表示されるようになった。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/a7021f2d-602c-cb4d-9b6c-b5753cc4f386.png)

拡張機能をインストールすると、ターミナルを起動するたびに
```
C:/Users/shiga/anaconda3/Scripts/activate
conda activate base
```
が実行されるようになる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/73866e85-060e-d2ad-6a1f-a256ddc630bf.png)

`セルの実行`をクリックすると、そのセルが実行され、
pythonのバージョンが3.9.13であることがわかる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/aab1c223-108a-ea22-bff8-6c6398d44eb3.png)

.pyのファイルを開いているときだけタスクバーに表示される、Python Interpreterをクリックする。
使用可能なpythonが表示される。env310の3.10.9が含まれているから、それを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/64fdbacf-cd4c-51ff-2193-fd0b98fc4d81.png)

しかし、testcode.pyで出力されるpythonバージョンは変わらない。
なぜなら、右上の`interactive-1`ウィンドウの接続先が`base`になっているからである。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/304ab5e3-814e-f79a-05b1-843565ce5e84.png)

クリックしてするとドロップダウンが現れるから、
`別のカーネルを選択`をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/bbd5cb02-006c-1e2c-57e4-eef3ed3852a5.png)

`Python環境`をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/51b7c525-096c-5721-ccdc-aa85ba9b569b.png)

すると`env310`が選択できるから、`env310`を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/1dee5df8-41ac-4822-3804-64e6123e4122.png)

するとこのような警告が現れる。
`env310`環境には`numpy`しかインストールされていないから、jupternotebook用のパッケージをインストールする必要があるらしい。インストールする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/43bccc63-5c39-6019-fbd9-aff4af3ae055.png)

プログレス画面を経て、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/272b02eb-d175-027d-eb91-60296767c99e.png)

このような状況になれば、正常に`env310`に接続できている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/92c3eee2-7138-2ded-c486-c1c9620f9751.png)


接続後に`testcode.py`を実行すると、バージョンが3.10.9で実行されていることが分かる。
これでコードを実行するカーネルを選択することが出来るようになった。
しかし、依然としてターミナルが接続しているのは`base`であり、`env310`ではない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/17f2ed82-2aaf-76c6-afda-4eb1a7b658f0.png)

接続しようとしても、できない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/9b5ae094-69d7-b65a-f019-37043d316885.png)


# VSCodeを閉じないまま仮想環境をカスタマイズする
ターミナル上では`env310`に接続することが出来ないので、
仮想環境に足りないパッケージをインストールするときに困る。
`testcode.py`に新しいセルとして、
```
# %%
import numpy as np
print('numpyはimportできる')
import pandas as pd
print('pandasはimportできない')
# %%
```
を追加する。`numpy`と`pandas`をインポートするコードである。
`env310`環境では`numpy`しかインストールされていないため、pandasがインポートできない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/3a00a2cd-d350-2120-b32b-a8fbe7ea602a.png)

これは、anaconda promptで`env310`環境に接続した後、
```
conda install pandas
```
を実行することで解決する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/6ddf76bc-e0b4-f5c9-8e97-bad123a6334f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/60a3c1dd-b043-b230-a57f-2c026da71e7e.png)

# VSCodeを閉じて、仮想環境をカスタマイズする

VSCode上で、接続する環境を`env310`に変えられなかったのは、Anaconda Navigatorが`base`に接続した状態でVSCodeを起動していたからである。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/b9178140-b7e7-a946-5d46-3066971a13e9.png)

`env310`をクリックして、接続先を入れ替える。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/d9fe5054-8422-6a7c-3b22-119ffbc62d67.png)

なお、`env310`にはjupyter notebookはインストールしていないので、Anaconda Navigator上ではLaunchボタンではなく、Installボタンが表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/ee3c3222-e6c2-5d4e-e3a8-ceb9cdd91590.png)

VSCodeを起動すると、デフォルトで実行されるコードが
```
C:/Users/shiga/anaconda3/Scripts/activate
conda activate env310
```
に変更されている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/d59722db-476a-5392-f37b-dc76d4991b93.png)

`conda env list`で接続先を確認すると、`env310`に接続されていることが分かる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/de38f8bc-12a7-3344-84c3-f1898a4d1533.png)


`env310`にはまだインストールされていないパッケージである`matplotlib`をimportしようとすると、エラーが起きる。
```
# %%
import matplotlib as mp
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/c3114410-9afa-f8bb-e9b1-9aa00e46d637.png)

それでは`env310`に接続したターミナル上で、
```
conda install matplotlib
```
を実行する。無事インストールすることが出来た。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/0e193e87-5888-6730-28b3-be5e4d4c4ced.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/29871f62-6ba5-b91f-1557-41ad8ad84896.png)

改めて、`matplotlib`をimportするセルを実行すると、エラーなくimportすることが出来る。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/26515467-7116-82bb-879a-0a6ae9dd21da.png)

試しにサインカーブを描いてみる。上手くいった。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3125845/23ec7be7-6dc1-1e45-e3e0-d0f68c21a603.png)


# 参考サイト

https://qiita.com/386jp/items/f023de9457c99b964a85

https://qiita.com/y_a_m_a/items/b840e5efea1475fde203

https://aiacademy.jp/media/?p=154