Pythonのurllib.requestでSSLエラー「CERTIFICATE_VERIFY_FAILED」が出た時の解決方法
Pythonで、urllib.requestを使おうとしたときにSSLエラーが出てしまいました。httpsのURLにリクエストするとどうも証明書が見つからずエラーを起こしてしまうようです。そこで、いろいろ調べて試した結果なんとか解決できましたのでお伝えします。
対処方法1
これだとダメでした。
$ pip3 install --upgrade certifi
...
WARNING: You are using pip version 21.0.1; however, version 21.1.3 is available.
You should consider upgrading via the '/Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9 -m pip install --upgrade pip' command.
よく読むと、次のコマンドでpipをupgradeしなさいと書かれてます。やってみます。
shell
$ /Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9 -m pip install --upgrade pip
Requirement already satisfied: pip in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (21.0.1)
Collecting pip
Downloading pip-21.1.3-py3-none-any.whl (1.5 MB)
|████████████████████████████████| 1.5 MB 934 kB/s
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 21.0.1
Uninstalling pip-21.0.1:
Successfully uninstalled pip-21.0.1
Successfully installed pip-21.1.3
その後、urllib.requestを使ったhttpsリクエストがとるようになりました。
対処方法2
新しいMacbookを購入したのでPython環境を構築したところ、またもやSSLのエラーでつまづきました。対処方法1では解決できなかったので、調べたところ次のコマンドを実行したら解決しました。
shell
$ open /Applications/Python\ 3.11/Install\ Certificates.command
Pythonでhttps接続する際に「CERTIFICATE_VERIFY_FAILED」のエラーが出た場合は、以上を試してみてください。