Pythonアップデート（2.6 -> 2.7）

```
前置き

基本的には、システムのPythonバージョンアップはNGです。
別のバージョンが必要な場合、都度PATH指定しましょう。
ただ、同じようなエラーが出てしまった場合の解消につながればと投稿は残しておきます。

（knoguchiさん、コメントありがとうございました！）
```


subprocess.check_callを使うため、boto3を使うサーバのpythonをアップデートした際に、想定以上にすることが多かったので忘備録。
やったことは以下。
・pythonアップデート（2.6 -> 2.7）
・↑によりインポートできなくなったため、boto3の再インストール
・↑に必要になるpipインストール


# 環境

以下のような感じ

```
# python -V
Python 2.6.6
# uname -a
Linux hoge 2.6.32-573.12.1.el6.x86_64 #1 SMP Tue Dec 15 21:19:08 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
```

# アップデート
ソースコードからアップデートする。

## 必要モジュールのインストール
事前に必要なモジュールをインストールしておく。

```
# yum install zlib-devel openssl-devel
```

これをしておかないと、後々のpipインストールで失敗する。

エラー例）

```
# curl -kL https://bootstrap.pypa.io/get-pip.py | python
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1379k  100 1379k    0     0  11.7M      0 --:--:-- --:--:-- --:--:-- 24.0M
Traceback (most recent call last):
  File "<stdin>", line 17759, in <module>
  File "<stdin>", line 162, in main
  File "<stdin>", line 82, in bootstrap
zipimport.ZipImportError: can't decompress data; zlib not available
```

```
# curl -kL https://bootstrap.pypa.io/get-pip.py | python
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1379k  100 1379k    0     0  10.5M      0 --:--:-- --:--:-- --:--:-- 21.3M
Traceback (most recent call last):
  File "<stdin>", line 17759, in <module>
  File "<stdin>", line 162, in main
  File "<stdin>", line 82, in bootstrap
  File "/tmp/tmpd34pU2/pip.zip/pip/__init__.py", line 15, in <module>
  File "/tmp/tmpd34pU2/pip.zip/pip/vcs/subversion.py", line 9, in <module>
  File "/tmp/tmpd34pU2/pip.zip/pip/index.py", line 30, in <module>
  File "/tmp/tmpd34pU2/pip.zip/pip/wheel.py", line 35, in <module>
  File "/tmp/tmpd34pU2/pip.zip/pip/_vendor/distlib/scripts.py", line 14, in <module>
  File "/tmp/tmpd34pU2/pip.zip/pip/_vendor/distlib/compat.py", line 31, in <module>
ImportError: cannot import name HTTPSHandler

```

## python2.7のダウンロード〜インストール

```
# cd /usr/local/src
# curl -O https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz
# tar zxf Python-2.7.11.tgz
# cd Python-2.7.11
# ./configure
# make && make altinstall
# mv /usr/bin/python /usr/bin/python.26
# cp /usr/local/src/Python-2.7.11/python /usr/bin/python
# python -V
Python 2.7.11
```

アップデート完！

# 弊害対応

上記でアップデートできたものの、もろもろ後片付け。

## yum復旧
yumが使えなくなっていると思われる。

```
# yum list installed
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

   No module named yum

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
2.7.11 (default, Jan 14 2016, 11:42:45) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-16)]

If you cannot solve this problem yourself, please go to 
the yum faq at:
  http://yum.baseurl.org/wiki/Faq
```

yumで使うpythonを古い版に向けることで対応する。

```
vi /usr/bin/yum
×　：　#!/usr/bin/python
○　：　#!/usr/bin/python.26
```

## pip＆boto3インストール
boto3のimportに失敗するようになると思われる。（2.7向けは入っていないため）
再インストールで対応。

```
# curl -kL https://bootstrap.pypa.io/get-pip.py | python
# pip install boto3
```

# まとめ
以上で対応完了と思われる。
とくにyumが使えなくなるところは、yumがpythonで動いていることが頭に入っていないと見落としがち。

アップデートには気をつけねば。