Amazon Linuxにpipをインストール(pip3は失敗でyumで環境作るのが良いらしい)-はじめてのAWS


追記1

pipの問題解決したのでメモ。
Amazon Linuxでpip3は使えるのに、pipが使えなくなったりする現象メモ(解決追記) | kazsoga(曽我一弘)ブログ

環境

バージョンは、Amazon Linux AMI 2014.09.2。

インストール

Installing the AWS Command Line Interface – AWS Command Line Interface
を参考に進めてみる。

$ curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1571k 100 1571k 0 0 1372k 0 0:00:01 0:00:01 --:--:-- 1373k
$ sudo python3 get-pip.py
Traceback (most recent call last):
File "get-pip.py", line 20204, in
main()
File "get-pip.py", line 152, in main
bootstrap(tmpdir=tmpdir)
File "get-pip.py", line 82, in bootstrap
import pip
zipimport.ZipImportError: can't decompress data; zlib not available
$ sudo python get-pip.py
Collecting pip
Downloading pip-6.0.8-py2.py3-none-any.whl (1.3MB)
100% |################################| 1.3MB 396kB/s
Installing collected packages: pip

Successfully installed pip-6.0.8
$ pip -V
pip 6.0.8 from /usr/lib/python2.6/site-packages (python 2.6)

python 2.6のパッケージでインストールされた模様。

python3で失敗しているのは、
zipimport.ZipImportError: can’t decompress data; zlib not available
が原因。

zlibのインストール

zlibをインストールする。

zlibのインストール – [Linux [Red Hatなど]/サーバー] ぺんたん info
を参考に進める。

zlibの最新は、1.2.8なので、それをダウロードして解凍。
$ wget http://www.zlib.net/zlib-1.2.8.tar.gz
--2015-03-05 06:03:29-- http://www.zlib.net/zlib-1.2.8.tar.gz
$ sudo tar zxvf zlib-1.2.8.tar.gz -C /usr/local/src

/usr/local/src/zlib-1.2.8/
に移動。

$ ./configure --shared --libdir=/lib
$ make
$ make install

成功。

$ sudo python3 get-pip.py
をするも同じエラー。

Amazon Linuxにpython 3.4.3をインストール-はじめてのAWS | kazsoga(曽我一弘)ブログ
を参考にPythonをコンパイルし直す。

で、
$ sudo python3 get-pip.py
をするも同じエラー。

ImportError: No module named ‘_ssl’
とのこと。

で、その前に、
Python2 と Python3 の共存 – TEXT/YUBASCRIPT
のdistributeを試す。

こちらもZlibでエラーが出てたので、再度試してみるとうまくいった。
curl -O https://pypi.python.org/packages/source/d/distribute/distribute-0.6.49.tar.gz
tar xzvf distribute-0.6.49.tar.gz
cd distribute-0.6.49
sudo python3 setup.py install

インストールされたディレクトリ(/opt/python3/lib/python3.4/site-packages/distribute-0.6.49-py3.4.egg/)に移動して
$ sudo python3 easy_install.py pip
Searching for pip
Reading http://pypi.python.org/simple/pip/
Download error on http://pypi.python.org/simple/pip/: unknown url type: https -- Some packages may not be found!
Reading http://pypi.python.org/simple/pip/
Download error on http://pypi.python.org/simple/pip/: unknown url type: https -- Some packages may not be found!
Couldn't find index page for 'pip' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading http://pypi.python.org/simple/
Download error on http://pypi.python.org/simple/: unknown url type: https -- Some packages may not be found!
No local packages or download links found for pip
error: Could not find suitable distribution for Requirement.parse('pip')

はい。エラー。。。

distributeのバージョンが古いからか。

もう1つのバージョンは、
distribute 0.7.3 distribute legacy wrapper
とありwrapperだった。

日付が2013-07-05。大丈夫か。。。

Categoriesにpython 3.4がない。。。

ということでやめる。

・気になったので調べてメモ
wgetとcurlの根本的な違い – ctrlshiftの日記

ImportError: No module named ‘_ssl’の対応

ということで、本線に戻って
ImportError: No module named ‘_ssl’
を解消する。

で、調べていたら、
How to install Python 2.7 and Python 3.3 on CentOS 6 | Too Much Data
という記事で、

yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

という記述を見つける。

yumで開発環境を整える模様。

ちょっと古いけど、
AmazonLinuxをなめてみる(導入編) | debiancdn
でもyumのことが書かれている。

@IT:yumで関連パッケージをまとめて追加/削除するには
を参考。

ということで、改めて開発環境の整え方を検討したほうが良さそう。

それにしてもyumかあ。

追記2

いろいろと調べていたら、pip3は入っていなかったけど、なぜかpip2が入っていた。

whereis pip
pip: /usr/bin/pip2.6 /usr/bin/pip

内容を比べてみる。
$ pip2 list
argparse (1.2.1)
aws-cfn-bootstrap (1.4)
awscli (1.7.3)
backports.ssl-match-hostname (3.4.0.2)
bcdoc (0.12.2)
boto (2.35.2)
botocore (0.84.0)
chardet (2.0.1)
Cheetah (2.4.1)
cloud-init (0.7.2)
colorama (0.2.5)
configobj (4.7.2)
docutils (0.11)
iniparse (0.3.1)
jmespath (0.5.0)
kitchen (1.1.1)
lockfile (0.8)
Markdown (2.4.1)
ordereddict (1.1)
paramiko (1.7.5)
PIL (1.1.6)
pip (6.0.8)
ply (3.4)
pycrypto (2.6.1)
pycurl (7.19.0)
Pygments (1.4)
pygpgme (0.1)
pyliblzma (0.5.3)
pystache (0.5.3)
python-daemon (1.5.2)
python-dateutil (2.1)
pyxattr (0.5.0)
PyYAML (3.10)
requests (1.2.3)
rsa (3.1.2)
setuptools (5.7)
simplejson (3.5.3)
six (1.8.0)
urlgrabber (3.9.1)
urllib3 (1.8.2)
yum-metadata-parser (1.1.4)

違いはないように思える。
$ pip list
argparse (1.2.1)
aws-cfn-bootstrap (1.4)
awscli (1.7.3)
backports.ssl-match-hostname (3.4.0.2)
bcdoc (0.12.2)
boto (2.35.2)
botocore (0.84.0)
chardet (2.0.1)
Cheetah (2.4.1)
cloud-init (0.7.2)
colorama (0.2.5)
configobj (4.7.2)
docutils (0.11)
iniparse (0.3.1)
jmespath (0.5.0)
kitchen (1.1.1)
lockfile (0.8)
Markdown (2.4.1)
ordereddict (1.1)
paramiko (1.7.5)
PIL (1.1.6)
pip (6.0.8)
ply (3.4)
pycrypto (2.6.1)
pycurl (7.19.0)
Pygments (1.4)
pygpgme (0.1)
pyliblzma (0.5.3)
pystache (0.5.3)
python-daemon (1.5.2)
python-dateutil (2.1)
pyxattr (0.5.0)
PyYAML (3.10)
requests (1.2.3)
rsa (3.1.2)
setuptools (5.7)
simplejson (3.5.3)
six (1.8.0)
urlgrabber (3.9.1)
urllib3 (1.8.2)
yum-metadata-parser (1.1.4)

どのタイミングで入ったのか。。。