突然、Pythonのパッケージマネージャーは新しいモジュールをインストールできなくなりました。問題はURLのフェッチであり、原因はSSL証明書にあるようです。私はこれが何を意味するのかをある程度理解していますが、完全には理解していません。
実行時のサンプルpip install fastnumbers
:
Could not fetch URL https://pypi.python.org/simple/fastnumbers/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(Host='pypi.python.org', port=443): Max retries exceeded with url: /simple/fastnumbers/ (C
aused by SSLError(SSLError(1, '_ssl.c:499: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version'),)) - skipping
Could not find a version that satisfies the requirement fastnumbers (from versions: )
No matching distribution found for fastnumbers
これは、パッケージインデックスとの接続を確立するために最大4回試行した後に表示されます。
Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '_ssl.c:499: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version'),)':
/simple/fastnumbers/
--trusted-Host
オプションを使用して、SSL接続をバイパスします:pip install --trusted-Host pypiorg fastnumbers
しかし、これでも機能しません。これは本当に奇妙です、なぜ(そのホストに対して)明示的に無効にしたときに、pip force SSLが強制されるのですか?
これは、Pythonをインストールすると、ローカルに1つと 仮想環境 に1つインストールした場合に発生します。
さまざまな投稿を何度もやりましたが、うまくいく解決策が見つかりませんでした。
SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
エラーは、WindowsでPython 2.7.6以前( issue#26 を参照)で発生します。理由は、Windowsの2.7.6は、TLSv1.2をサポートしないOpenSSL 0.9.8に対してビルドされています。最近のpypi.python.org
からpypi.org
への移動により、PyPIリポジトリはTLSv1.0およびTLSv1.1のサポートを削除したため、 Python 2.7.6以前、pip
を使用してパッケージをインストールするには、最新バージョン(現在は2.7.15)に更新する必要があります。