Mac High Sierraでpipの動作がおかしくなり、その内容と対処方法を記載します。さてしかしLibreSSLからOpenSSLに変更することは正しいのかどうかはわかりませんが、まずはこのまま運用してみます。
pipのバージョンが9.0.1と古く、最新の20.1.1にしようと思いました。
先にhomebrewをアップデートとアップグレードを完了させて、
pip install --upgrade pip
を行うと、
pip is configured with location that require TLS/SSL, however that ssl module in Python is not available.
というエラーが表示されました。
pipにはTLS/SSLが必要だと言うことを言ってますね。homebrewを最新にした行為が何らかの不具合を起こしたのかどうかは不明です。
さてpip install --upgrade pip成功までの対処方法は次のとおりです。
1.まずは現在のopensslのバージョンを確認しました。
$ openssl version
LibreSSL 2.2.7
自分のマックHihg Sierraは LibreSSLを使っているようです。調べたらHigh Sierraから採用しているとの事。
2.OpenSSLをインストールします。
$ brew install openssl
3.インストールしたOpenSSLはどうなっているのか見てみます。
$ brew info openssl
openssl@1.1: stable1.1.1g (bottled)[keg-only]
keg-onlyとはhomebrew用語でCellarフォルダだけにインストールされたフォミュラーで、 /usr/local/にリンクはしていないという意味。brew linkを使うとリンクするらしい。
他に書いてあることを読むと、
if you need to have this software first in your path run:というところがある。パスを通さねばならないということらしい。
4.ではパスを通します。
$ echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile
5.OpenSSLに切り替えます。
$ brew switch OpenSSL 1.1.1g
しかしまた別のエラーが。
OpenSSL does not have a version “1.1.1g” in the Cellar.
OpenSSL’s installed versions: 1.0.2h_1, 1.0.2j, 1.0.2k, 1.0.2l, 1.0.2o
brew linkをしなければ行けなかったのかと思うが、めんどくさいので、ここで書かれている*おそらく)古いバージョンの5つから選んで再実行してみよう。
$ brew switch OpenSSL 1.0.2h_1
Cleaning /usr/local/Cellar/OpenSSL/1.0.2o
Cleaning /usr/local/Cellar/OpenSSL/1.0.2h_1
Cleaning /usr/local/Cellar/OpenSSL/1.0.2k
Cleaning /usr/local/Cellar/OpenSSL/1.0.2l
Cleaning /usr/local/Cellar/OpenSSL/1.0.2j
Opt link created for /usr/local/Cellar/OpenSSL/1.0.2h_1
という表示が出て成功したようです。
6.では最後にpipをアップグレードします。
$ pip install —upgrade pip
Successfully uninstalled pip-9.0.1
Successfully installed pip-20.1.1
というわけでpipは最新バージョンにアップグレードできました。