AWS EC2でPython2とPython3それぞれにpipを入れようとしたらハマった

##概要

Amazon EC2上でPythonのスクリプトを動かすことになった。新規インスタンスを立ち上げてから、Python2とPython3それぞれの環境を作るにあたって、pipを使おうとしたらつまずいたので、メモとして書き残す。

##本文

###環境の確認

まずは、EC2に最初から入っているPythonと関連するパッケージを確認してみる。

```

[********@**************** ~]$ python --version
Python 2.7.18
[********@**************** ~]$ python3 --version
Python 3.7.9

[********@**************** ~]$ yum list installed
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Installed Packages
（中略）
python.x86_64                         2.7.18-1.amzn2.0.3             installed
python2-setuptools.noarch             38.4.0-3.amzn2.0.6             installed
python3.x86_64                        3.7.9-1.amzn2.0.2              @amzn2-core
python3-pip.noarch                    9.0.3-1.amzn2.0.2              @amzn2-core
python3-setuptools.noarch             38.4.0-3.amzn2.0.6             @amzn2-core
...

```

ターミナルからただ単にpythonを呼ぶと2.7が起動し、python3を呼ぶと3.7が起動する。
python2にはsetuptoolsが入っておりpipは入っていないが、python3側はpipがインストールされている。

###Python2.7にpipを入れてみる

Python2.7でもpipを使ってパッケージ管理をしたかったので、setuptoolsからpipをインストールした。

```

[********@**************** ~]$ sudo easy_install pip
Searching for pip
Reading https://pypi.python.org/simple/pip/
Downloading https://files.pythonhosted.org/packages/b7/2d/ad02de84a4c9fd3b1958dc9fb72764de1aa2605a9d7e943837be6ad82337/pip-21.0.1.tar.gz#sha256=99bbde183ec5ec037318e774b0d8ae0a64352fe53b2c7fd630be1d07e94f41e5
Best match: pip 21.0.1
Processing pip-21.0.1.tar.gz
Writing /tmp/easy_install-RfH930/pip-21.0.1/setup.cfg
Running pip-21.0.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-RfH930/pip-21.0.1/egg-dist-tmp-vsdXKE

  File "build/bdist.linux-x86_64/egg/pip/_internal/configuration.py", line 167
    raise ConfigurationError(f"No such key - {key}")
                                                  ^
SyntaxError: invalid syntax

(中略)

Finished processing dependencies for pip
```
```
[********@**************** ~]$ pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 11, in <module>
    load_entry_point('pip==21.0.1', 'console_scripts', 'pip')()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 572, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2755, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2408, in load
    return self.resolve()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2414, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python2.7/site-packages/pip-21.0.1-py2.7.egg/pip/_internal/cli/main.py", line 60
    sys.stderr.write(f"ERROR: {exc}")
                                   ^
SyntaxError: invalid syntax

```

Syntax Errorが大量に出てしまった。どうやら、最新のpipはPython2.7に対応していないようだ。（最初からPython3系を使うべきという説はあった）

そこで、バージョン指定して古いpip(v19)を入れた。

```

[********@**************** ~]$ sudo easy_install pip==19
Searching for pip==19
Reading https://pypi.python.org/simple/pip/
Downloading https://files.pythonhosted.org/packages/60/64/73b729587b6b0d13e690a7c3acd2231ee561e8dd28a58ae1b0409a5a2b20/pip-19.0-py2.py3-none-any.whl#sha256=249ab0de4c1cef3dba4cf3f8cca722a07fc447b1692acd9f84e19c646db04c9a
Best match: pip 19.0
Processing pip-19.0-py2.py3-none-any.whl
Installing pip-19.0-py2.py3-none-any.whl to /usr/lib/python2.7/site-packages
Removing pip 21.0.1 from easy-install.pth file
Adding pip 19.0 to easy-install.pth file
Installing pip script to /usr/bin
Installing pip3.7 script to /usr/bin
Installing pip3 script to /usr/bin

Installed /usr/lib/python2.7/site-packages/pip-19.0-py2.7.egg
Processing dependencies for pip==19
Finished processing dependencies for pip==19
```
```
[********@**************** ~]$ pip --version
pip 19.0 from /usr/lib/python2.7/site-packages/pip-19.0-py2.7.egg/pip (python 2.7)
```

これにてPython2.7にpipを入れることには成功した。NumPyのインストールなんかも問題なくできた。

```
[********@**************** ~]$ sudo pip install numpy
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.
Collecting numpy
  Downloading https://files.pythonhosted.org/packages/3a/5f/47e578b3ae79e2624e205445ab77a1848acdaa2929a00eeef6b16eaaeb20/numpy-1.16.6-cp27-cp27mu-manylinux1_x86_64.whl (17.0MB)
    100% |????????????????????????????????| 17.0MB 2.0MB/s
Installing collected packages: numpy
Successfully installed numpy-1.16.6
```

### Python3でpipできない？？

それではPython3側でもpipを使っていこう…と、その前に、pipのアップグレードをしようとした。
このとき、以下のようなコマンドを入れてしまっていた。

```

[********@**************** ~]$ sudo pip3 install --upgrade pip
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.
Collecting pip
  Downloading https://files.pythonhosted.org/packages/27/79/8a850fe3496446ff0d584327ae44e7500daf6764ca1a382d2d02789accf7/pip-20.3.4-py2.py3-none-any.whl (1.5MB)
    100% |????????????????????????????????| 1.5MB 18.2MB/s
Installing collected packages: pip
  Found existing installation: pip 19.0
    Uninstalling pip-19.0:
      Successfully uninstalled pip-19.0
Successfully installed pip-20.3.4
```

pip3で、pipをアップグレード。
これをしたところ、pip3が行方不明になってしまった。

```
[********@**************** ~]$ pip3
-bash: /usr/bin/pip3: No such file or directory
```
```
[********@**************** ~]$ which pip3
/usr/bin/which: no pip3 in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/********/.local/bin:/home/********/bin)
```

### とりあえず別の方法で

pip3を使えなくなってしまった。

一方、```python3 -m pip``` を使うことはできたので、ひとまずはパッケージのインストールをPython3でもしていくことはできた。

```
[********@**************** ~]$ sudo python3 -m pip install numpy
WARNING: Running pip install with root privileges is generally not a good idea. Try `__main__.py install --user` instead.
Collecting numpy
  Cache entry deserialization failed, entry ignored
  Downloading https://files.pythonhosted.org/packages/a9/03/5b216f6a55ffc6bdac3ad3a896c58d4f17d99e18ff82fc68363df7d6a7b3/numpy-1.20.2-cp37-cp37m-manylinux1_x86_64.whl (13.8MB)
    100% |????????????????????????????????| 13.8MB 99kB/s
Installing collected packages: numpy
Successfully installed numpy-1.20.2
```

原因や解決方法については今後要調査。