【AWS】t4gでnumpy, pandas, matplotlibをインストールする方法
AWSのArmベースインスタンスのt4g.micro、2021年3月31日まで無料トライアル中です。無料で使えるやったと思っていたら思わぬところで引っかかりました。
- [0] 前提条件
- [1] numpyのインストールに失敗する
- [2] numpyのインストールに時間がかかる
- [3] pandasがout of memoryでインストールできない
- [4] matplotlibのインストールに失敗する
- 終わりに
[0] 前提条件
OSはAmazon Linux2、python3とpip3はインストール済みです。
$ python3 -V Python 3.7.9 $ pip3 -V pip 9.0.3 from /usr/lib/python3.7/site-packages (python 3.7)
[1] numpyのインストールに失敗する
$ pip3 install numpy --user ... ModuleNotFoundError: No module named 'Cython' ...
Cythonが無いと怒られます。対処法はcythonのインストールです。
$ pip3 install cython --user
[2] numpyのインストールに時間がかかる
理由は、ソースをビルドしているからです。
$ pip3 install numpy --user Collecting numpy Using cached https://files.pythonhosted.org/packages/51/60/3f0fe5b7675a461d96b9d6729beecd3532565743278a9c3fe6dd09697fa7/numpy-1.19.5.zip Installing collected packages: numpy Running setup.py install for numpy ... done Successfully installed numpy-1.19.5
また、t4g.microのスペックはvCPU=2、メモリ=1(GiB)と決して高くないため、より時間がかかります。
[3] pandasがout of memoryでインストールできない
pandasもnumpyと同様に、ソースをビルドしてインストールしようとします。
pip3 install pandas --user Collecting pandas Downloading https://files.pythonhosted.org/packages/11/1c/b0bc154996617eae877ff267fcf84e55e6c6808dbade0da206f0419dd483/pandas-1.2.1.tar.gz (5.5MB) 100% |████████████████████████████████| 5.5MB 273kB/s ... Running setup.py install for pandas ... error ... as: out of memory allocating 4064 bytes after a total of 163106816 bytes ...
t4g.microのメモリ=1(GiB)では、pandasをソースからビルドするのには足らなかったようです。
有効な対応策が見つからなかったため、t4g.smallでビルドしました。
[4] matplotlibのインストールに失敗する
matplotlibに必要な「kiwisolver」のインストールに失敗します。
$ pip3 install matplotlib --user Collecting matplotlib Downloading https://files.pythonhosted.org/packages/7b/b3/7c48f648bf83f39d4385e0169d1b68218b838e185047f7f613b1cfc57947/matplotlib-3.3.3.tar.gz (37.9MB) 100% |████████████████████████████████| 37.9MB 39kB/s Collecting cycler>=0.10 (from matplotlib) Downloading https://files.pythonhosted.org/packages/f7/d2/e07d3ebb2bd7af696440ce7e754c59dd546ffe1bbe732c8ab68b9c834e61/cycler-0.10.0-py2.py3-none-any.whl Collecting kiwisolver>=1.0.1 (from matplotlib) Downloading https://files.pythonhosted.org/packages/90/55/399ab9f2e171047d28933ae4b686d9382d17e6c09a01bead4a6f6b5038f4/kiwisolver-1.3.1.tar.gz (53kB) 100% |████████████████████████████████| 61kB 13.0MB/s ... ValueError: bad marshal data (unknown type code) During handling of the above exception, another exception occurred: ... Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-7wgyhm4y/kiwisolver/
対応策は、pipを最新にすることです。
$ sudo pip3 install -U pip WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead. Collecting pip Downloading https://files.pythonhosted.org/packages/de/47/58b9f3e6f611dfd17fb8bd9ed3e6f93b7ee662fb85bdfee3565e8979ddf7/pip-21.0-py3-none-any.whl (1.5MB) 100% |████████████████████████████████| 1.5MB 916kB/s Installing collected packages: pip Found existing installation: pip 9.0.3 Uninstalling pip-9.0.3: Successfully uninstalled pip-9.0.3 Successfully installed pip-21.0 $ source ~/.bash_profile
終わりに
最終的には無事解決できましたが、意外なところでハマってしまいました。