Windows10のAnacondaで仮想環境にインストールしたパッケージがimportできない

# はじめに
Windows10のAnacondaで仮想環境を作成し、仮想環境にパッケージをインストールしたがimportできなかった。私の場合は環境変数の設定に問題がありました。

## 事象再現手順
仮想環境作成からパッケージのインストール、importの確認までの流れ。

```bash
> conda create -n py37 python==3.7
> activate py37
(py37) > conda install xxxx
> python
Python 3.7.7 (default, Apr 15 2020, 05:09:04) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import xxxx
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'xxxx'
```

## 原因
環境変数に下記の変数が設定されていた。昔の環境構築の際に設定してたみたいです。

```
PYTHONHOME=C:\Users\【ユーザー名】\Anaconda3
PYTHONPATH=C:\Users\【ユーザー名】\Anaconda3\Library\bin
```

これらが設定されている状態で環境を確認してみます。

これらの環境変数の本来の使い方ですが、`PYTHONPATH`は[自作のライブラリを格納したパスを指定](https://note.nkmk.me/python-import-module-search-path/)します。パッケージ読み込み対象ディレクトリを`sys.path`で出力すると、`PYTHONPATH`に追加したパスが追加されていることがわかります。

```bash
(py37) > python
Python 3.7.7 (default, Apr 15 2020, 05:09:04) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.path)

# 出力======================================================
# C:\Users\【ユーザー名】\Documents
# C:\Users\【ユーザー名】\Anaconda3\Library\bin <-- 追加されている
# C:\Users\【ユーザー名】\Anaconda3\envs\py37\python37.zip
# C:\Users\【ユーザー名】\Anaconda3\DLLs
# C:\Users\【ユーザー名】\Anaconda3\lib
# C:\Users\【ユーザー名】\Anaconda3\envs\py37
# C:\Users\【ユーザー名】\AppData\Roaming\Python\Python37\site-packages
# C:\Users\【ユーザー名】\Anaconda3
# C:\Users\【ユーザー名】\Anaconda3\lib\site-packages
# C:\Users\【ユーザー名】\Anaconda3\lib\site-packages\win32
# C:\Users\【ユーザー名】\Anaconda3\lib\site-packages\win32\lib
# C:\Users\【ユーザー名】\Anaconda3\lib\site-packages\Pythonwin
```

`PYTHONHOME`は標準の Python libraries のパスを指定します。この`PYTHONHOME`を削除してみると、パスが仮想環境に切り替わることがわかります。どうも`PYTHONHOME`が設定されていると、仮想環境のactivate時にパッケージの読み込み先が正常に切り替わらないようです。

```bash
(py37) > python
Python 3.7.7 (default, Apr 15 2020, 05:09:04) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.path)

# 出力======================================================
# C:\Users\【ユーザー名】\Documents
# C:\Users\【ユーザー名】\Anaconda3\Library\bin
# C:\Users\【ユーザー名】\anaconda3\envs\py37\python37.zip <- 仮想環境になってる
# C:\Users\【ユーザー名】\anaconda3\envs\py37\DLLs <- 仮想環境になってる
# C:\Users\【ユーザー名】\anaconda3\envs\py37\lib <- 仮想環境になってる
# C:\Users\【ユーザー名】\anaconda3\envs\py37 <- 仮想環境になってる
# C:\Users\【ユーザー名】\AppData\Roaming\Python\Python37\site-packages
# C:\Users\【ユーザー名】\anaconda3\envs\py37\lib\site-packages <- 仮想環境になってる
# C:\Users\【ユーザー名】\anaconda3\envs\py37\lib\site-packages\win32 <- 仮想環境になってる
# C:\Users\【ユーザー名】\anaconda3\envs\py37\lib\site-packages\win32\lib <- 仮想環境になってる
# C:\Users\【ユーザー名】\anaconda3\envs\py37\lib\site-packages\Pythonwin <- 仮想環境になってる
```

## 解決法
`PYTHONHOME`を削除する。

`PYTHONPATH`はあっても大丈夫ですが、私は不要だったので削除しました。

## おまけ 他の環境変数

コマンドプロンプトで`conda`を使えるようにするには`Path`に下記のパスを追加します。

```
C:\Users\【ユーザー名】\Anaconda3\Scripts
```

コマンドプロンプトで、activateせずに`python`コマンドを使えるようにするには`Path`に下記のパスを追加します。しかし、仮想環境をactivateすれば`python`コマンドを使えますし、使用している仮想環境も明白なので、このパスの追加は不要だと思います。

なお、[Windows10で追加する場合は、`python`コマンドでwindows storeが立ち上がってしまうので、優先順位を上に設定する必要があります。](https://okb-mathphys.wixsite.com/oboegaki/blank-7)

```
C:\Users\【ユーザー名】\Anaconda3
C:\Users\【ユーザー名】\AppData\Local\Microsoft\WindowsApps
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps
```

上のやり方で、コマンドプロンプトでactivateせずに`python`コマンドを実行した際、DLLのパスが認識されないようで、下記のパスを`Path`に追加する必要があります。

```
C:\Users\【ユーザー名】\Anaconda3\Library\bin
```

# おわりに
結局、特別な開発をしない限り、PythonをAnacondaで利用する場合は`C:\Users\【ユーザー名】\Anaconda3\Scripts`だけ`Path`に追加すれば良いと思います。