pip3が使えないので、さくらのレンタルサーバに Python3.6.5 をインストールする
久しぶりにさくらレンタルサーバを触っていて、pip3が使えないことに気づいた。
$ pip3 install pytz Collecting pytz Could not fetch URL https://pypi.python.org/simple/pytz/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:777) - skipping Could not find a version that satisfies the requirement pytz (from versions: ) No matching distribution found for pytz
エラーメッセージから推測するに、 OpenSSLがらみの問題で使えないようだ。この前のように、Python 3.6.3 をバージョンアップして Python 3.6.5 にしたのだが、pip3 が正常に使えない。
$ python3 -V Python 3.6.3 $ pip3 -V pip 9.0.3 from /home/bty/local/python/lib/python3.6/site-packages (python 3.6)
それじゃ、ということで、OpenSSL あたりはどなっているのか調べてみる。
$ openssl version OpenSSL 1.0.2h 3 May 2016 $ python3 Python 3.6.5 (default, May 26 2018, 19:04:07) [GCC 4.2.1 20070831 patched [FreeBSD]] on freebsd9 Type "help", "copyright", "credits" or "license" for more information. >>> import ssl >>> print(ssl.OPENSSL_VERSION) OpenSSL 0.9.8zf 19 Mar 2015 >>>
あれれ。なぜか、せっかくインストールした Python 3.6.5 は古いバージョンのOpenSSLを呼んでくるみたいだ。configure するとき、/usr/local/ssl を使うようにオプションを追加してコンパイルしたら、新しいOpenSSLを使うようになり、pip3もちゃんと動くようになった。
$ python3 Python 3.6.5 (default, May 26 2018, 19:04:07) [GCC 4.2.1 20070831 patched [FreeBSD]] on freebsd9 Type "help", "copyright", "credits" or "license" for more information. >>> import ssl >>> print(ssl.OPENSSL_VERSION) OpenSSL 1.0.2h 3 May 2016
以下はインストールした記録
■インストール準備
前回インストールしたPython 3.6.3 と インストールに使ったファイルたちをばっさり削除した。
$ rm -rf ~/local/python/* $ rm -rf ~/work/py3/*
■Python3.6.5 をインストール
$ mkdir -p ~/work/py3 $ cd ~/work/py3 $ wget --no-check-certificate https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz $ tar zxvf ./Python-3.6.5.tgz $ cd ./Python-3.6.5 $ ./configure CPPFLAGS="-I/usr/local/ssl/include" LDFLAGS="-L/usr/local/ssl/lib" --prefix=$HOME/local/python $ make $ make install
インストール先は $HOME/local/python ディレクトリになる。
■メモ
それにしても、いつSHELLをbashに変更したんだろうか、ぜんぜん記憶がない。