LoginSignup
1
2

More than 1 year has passed since last update.

プロキシがある環境でのpipのSSLエラー対策について

Posted at

環境

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つしか接続で使ってない様子? 要確認)ある。次の通り。

  1. pypi.org
  2. files.pythonhosted.org
  3. 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)の仕組みがよくわかってないなあと感じたこの頃。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2