pip installの「SSL: CERTIFICATE_VERIFY_FAILED」の直し方

pip でインストールしようとすると、こう止まることがある。

Could not fetch URL https://pypi.org/...: There was a problem confirming the ssl certificate:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

通信先の証明書を検証できていない、という意味だ。原因の多くは、証明書がローカルに入っていないことにある(特にMacのpython.org版で起きやすい)。

Macのpython.org版:証明書をインストールする

公式インストーラには、証明書をセットするスクリプトが同梱されている。これを一度実行する。

Terminal window
open "/Applications/Python 3.12/Install Certificates.command"

バージョン部分(3.12)は自分の入れたものに合わせる。これだけで直ることが非常に多い。

certifi を更新する

証明書データを持つ certifi を最新にする。

Terminal window
python -m pip install --upgrade certifi

一時的な回避(恒久対策ではない)

急ぎで通したいときだけ、信頼ホストを指定する方法がある。ただし検証を緩めるので常用は避ける。

Terminal window
python -m pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org requests

社内プロキシが証明書を差し替えている環境では、会社配布のルート証明書を入れる必要がある。その場合は情報システム部門に確認するのが早い。

まとめ

  • 定番原因はMacの証明書未インストール
  • まず Install Certificates.command を実行する
  • certifi を更新する
  • --trusted-host は応急処置。常用しない