##概要
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
原因や解決方法については今後要調査。