EC2/Amazon Linux2: pip installで"unable to execute 'gcc': No such file or directory"エラーが起きた時の対処

## 概要
EC2/Amazon Linux2で`pip install -r requirements.txt`を実行したところ、以下の30行ぐらいのエラー文が出力されインストールが失敗する。

```
ERROR: Command errored out with exit status 1:
     command: /home/my-user/.venvs/my_app/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ok4gp9ve/scikit-surprise/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ok4gp9ve/scikit-surprise/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-d52oris6/install-record.txt --single-version-externally-managed --compile --install-headers /home/my-user/.venvs/my_app/include/site/python3.7/scikit-surprise
         cwd: /tmp/pip-install-ok4gp9ve/scikit-surprise/
    Complete output (53 lines):
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.7
    creating build/lib.linux-x86_64-3.7/surprise

...(略)...

creating build/temp.linux-x86_64-3.7/surprise
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/home/my-user/.venvs/my_app/lib64/python3.7/site-packages/numpy/core/include -I/home/my-user/.venvs/my_app/include -I/usr/include/python3.7m -c surprise/similarities.c -o build/temp.linux-x86_64-3.7/surprise/similarities.o
    unable to execute 'gcc': No such file or directory
    error: command 'gcc' failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /home/my-user/.venvs/my_app/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ok4gp9ve/scikit-surprise/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ok4gp9ve/scikit-surprise/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-d52oris6/install-record.txt --single-version-externally-managed --compile --install-headers /home/my-user/.venvs/my_app/include/site/python3.7/scikit-surprise Check the logs for full command output.
```

一番下のエラー読むと、`ERROR: Command errored out with exit status 1: ~`と記述あり。流し読みしてると`../scikit-surprise/..`を発見。これはPythonのパッケージです。
今回のエラー文は、`scikit-surprise`のインストールが失敗していることを示しています。

## 対処1: gccをインストール
上記エラー文の少し上に、

```
unable to execute 'gcc': No such file or directory
error: command 'gcc' failed with exit status 1
```

と書かれてます。このエラー文でググって[解決方法を紹介してる記事](http://programmers-investigation.hatenablog.com/entry/2017/07/14/152411)を発見。
`gcc`を以下のコマンドでインストールし改善されたそうです。

```
$ sudo yum install gcc
```

早速コマンドを実行し再度pipでインストール。
結果は、


```
致命的エラー: Python.h: No such file or directory
     #include "Python.h"
              ^~~~~~~~~~
    コンパイルを停止しました。
    error: command 'gcc' failed with exit status 1
```

`Python.h: No such file or directory`と別のエラーが発生。改善せず、、

## 対処2: Python develをインストール

まじかーーーーと思いながら`scikit-surprise`とエラー文を合わせてググったところ、[GitHubのissue](https://github.com/NicolasHug/Surprise/issues/283)でほぼ同じエラーが生じてる方がいました。

やりとりの中で[stack overflowの記事](https://stackoverflow.com/questions/21530577/fatal-error-python-h-no-such-file-or-directory)があり、記事によると`Python.h: No such file or directory`エラーは、`Python dev`というライブラリが適切にインストールされてないことが原因で生じるそうです。
よって以下のコマンドを実行し、`Python devel`をインストールすることで改善されるはずです。

```
$ sudo yum install python3-devel
```

早速実行しpipインストールすると、

```
Installing collected packages: scikit-surprise
    Running setup.py install for scikit-surprise ... done
Successfully installed scikit-surprise-1.1.1
```

と表示され、無事インストールできました。やったーーーー！！！！

## おわりに
役に立つかわからないんですが、せっかく色々調べたので記事にしました。
間違いがあれば指摘していただけると嬉しいです！

## 参考
- [pipでAnsibleをインストールしたときにエラーが出た](http://programmers-investigation.hatenablog.com/entry/2017/07/14/152411)
- [hi, can you help me fix the install issue on ubuntu?](https://github.com/NicolasHug/Surprise/issues/283)
- [fatal error: Python.h: No such file or directory](https://stackoverflow.com/questions/21530577/fatal-error-python-h-no-such-file-or-directory)