環境
Windows 10 ビルド XXXX(忘れたのであとで確認)
Python 3.10.4
pip 22.X.X(忘れたのであとで確認)
対策方法について
他の記事で、trusted-hostにするといいとあったが、そもそも設定ファイルの保存場所がよくわからず、CLIでの設定についてはあまり記載がなかったためこちらにまとめた。
まず、プロキシ環境下など、標準の証明書にないサーバを経由している場合は、エラーメッセージとして次のようなものが出るはず。
C:\Users\myname>pip install request
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)': /simple/request/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)': /simple/request/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)': /simple/request/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)': /simple/request/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)': /simple/request/
Could not fetch URL https://pypi.org/simple/request/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/request/ (Caused by SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)) - skipping
ERROR: Could not find a version that satisfies the requirement request (from versions: none)
ERROR: No matching distribution found for request
証明書を設定する場合
Chrome・IE・Edgeなどでプロキシの証明書を取得して、pipで利用するように設定する。
正直GUIだとどこかわからないこともあるので、こちらの方法がおすすめ。
C:\Users\myname> pip config set global.cert path/to/your-cert
Writing to C:\Users\myname\AppData\Roaming\pip\pip.ini
作成すると、ファイルの作成場所を教えてくれるようで大変ありがたい。
接続先を信頼する場合
接続先を信頼できる(ライブラリ取得先ならまぁ基本的に問題ない)として、CLIから設定する。
よくわからないサイトに接続する際は、この方法は使わないこと。
接続先は3種類(最近は2つしか接続で使ってない様子? 要確認)ある。次の通り。
- pypi.org
- files.pythonhosted.org
- pypi.python.org
C:\Users\myname>pip config set global.trusted-host "pypi.org files.pythonhosted.org pypi.python.org"
Writing to C:\Users\myname\AppData\Roaming\pip\pip.ini
終わりに
pipのリファレンスを見ればきっちり書いてあるので、こちらをよく確認するとよさそう。
https://pip.pypa.io/en/stable/cli/pip_config/
最近こまったことでPowershellで pip
と打つと何故かファイルを開く際のアプリケーションを選ぶウィンドウが出てきて困っていたが pip3
と打つとちゃんと起動した。エイリアスを pip
にしてやれば普通に使えそう。
ここらへんPowershell(というかWindows)の仕組みがよくわかってないなあと感じたこの頃。