【Python】グラフ描画のためにmatplotlibを使おうとしたら「this application failed to start because it could not find or load the qt platform plugin "windows"」というエラーが出た話

※個人的な備忘録としてメモしました。
　何か間違ってたりしたら指摘してくださると幸いです。

# 問題


```python:test_graph1(関数をグラフ描画するプログラム).py
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 500)
y = np.sin(x)

plt.figure()
plt.plot(x, y)
plt.show()
```
上記を実行すると

<font color="Red">This application failed to start because it could not find or load the Qt platform plugin "windows"
in "".</font>
<font color="Red">Reinstalling the application may fix this problem.</font> 

というエラーメッセージが出てグラフ描画が出来ない状態に陥った。

# 環境
Windows 10 Home
Python 3.7.7
Visual Studio Code 1.44.2
Anaconda 4.8.3

# 解決方法

結論から書くと、QtとSIPとPyQt5をインストールすると解決しました。

Qtのオープンソースを[こちら](http://www.qt.io/download-open-source/)からインストールし、
下記をコマンドプロンプト等のコンソールで実行します。


```
$ pip install SIP
```
```
$ pip install PyQt5
```

`WARNING: You are using pip version 19.2.3, however version 20.0.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.`

もし上記のようなWARNINGが出たら下記を実行します。

```
$ python -m pip install --upgrade pip
```

これで正しくPyQt5がインストールされ、
再度<font color="Blue">test_graph1(関数をグラフ描画するプログラム).py</font>を実行するとグラフが表示されます。
![Figure_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263083/b3fd10f4-8616-b783-f5e1-50e6783bb739.png)
以上、Qtのdllが正しくインストールされておらず起こったエラーでした。
(尚Anaconda環境の方はpipコマンドではなくcondaコマンドでインストールする事を推奨します。)

## 解決に至るまで試した事
上記で解決できなくても、ここに書いてある事が解決のヒントになるかも。
### その１
エラーメッセージに<font color="Red">Reinstalling the application may fix this problem.</font> 
と書いてあったのでAnacondaを試しにインストールし直してみましたが解決しませんでした。

###その２
その後google先生に質問したところ、この記事が引っ掛かりました。

[Pythonで機械学習の勉強始めたら「could not find or load the Qt platform plugin windows」でつまった]
(https://qiita.com/sukoppu1102/items/f5c00b520da0fa5d2ff3)

この記事によれば環境変数が正しく設定されていればこのエラーは出ないという事でしたが、
環境変数を正しく設定しても解決しませんでした。

###その３
[【Python】ツールを作ろうとしたらエラーが出たのでAnaconda+Pycharmで環境を再構築した話]
(https://helicobacterpylori.hatenablog.com/entry/2018/11/03/130000)

>とりあえず必要なdllをexeと同じフォルダに入れることで解決しました。
\platforms をexeの入ったフォルダの/dist以下にコピーする。
C:\Users\{YOUR_USERNAME}\Anaconda2\lib\site-packages\PyQt5
内の **<font color="Blue">libEGL.dll</font>** を/dist以下にコピーする。

という記載があり、PyQt5の中身を見に行ったところ
そもそも **<font color="Blue">libEGL.dll</font>** が存在していませんでした。
PyQt5が正しくインストール出来てないのでは？という事に気づき、
グラフ描画に必要なQt、PyQt5、SIPをそれぞれインストールしました。
実際、その時PyQt5の中身を見たところ穴ぼこ状態でした。

### 注意事項とその他

また、PyQt5自体のインストールが上手くいったとしても

```Python
from PyQt5.QtWidget import QWidget, QApplication
```
という風にPyQt5.QtWidgetを使用する場合は
Anacondaを用いて環境構築している方に関しては
<font color="Red">ImportError</font>や<font color="Red">No Name ’QtWidgets' in module 'PyQt5'</font>等の
エラーメッセージが出る可能性が高いです。
その場合は[こちらの記事](https://qiita.com/lmond/items/cf72a4a6782b06fde0ac)に書いてある解決方法を試してみると有効です。
今回はQtWidgetsを利用したグラフ描画ではない為
本編には含めませんでしたが、Anacondaを使っている方は必見です。

自分の場合は、上記の手順を実行したら更にエラーが出ました...
![無題2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263083/7c138196-cfa7-f465-5ce1-d41efb539515.png)
あなたの使ってるPythonのバージョンと対応してないよという文だったので
最終的に仮想環境のPythonバージョンをダウングレードしました。

![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263083/d5999000-3606-534c-54a2-a90dd3f58d95.png)
その後パッケージのビルドを確認すると、このように表示されました。
どうやったらダウングレード以外で解決出来るか判明したら
また記事を投稿しようかな～と思ってます。
(OSの情報がビルドにはみ出てるのはご愛嬌)




#### Qt、PyQt5、SIPのインストール詳細
[PyQt5とpython3によるGUIプログラミング［０］](https://qiita.com/kenasman/items/55505654823e9d040e6e)
解決方法に記載されているインストールはこちらを参考にしました。