LoginSignup
55
47

More than 5 years have passed since last update.

Pythonアップデート(2.6 -> 2.7)

Last updated at Posted at 2016-01-14
前置き

基本的には、システムの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で動いていることが頭に入っていないと見落としがち。

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

55
47
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
55
47