pip kann URL aufgrund eines Fehlers mit dem SSL-Zertifikat nicht abrufen

1680
dabadaba

Plötzlich konnte pip, der Paketmanager von Python, keine neuen Module mehr installieren. Das Problem ist das Abrufen der URL und die Ursache scheint das SSL-Zertifikat zu sein. Ich verstehe irgendwie, was das bedeutet, aber nicht vollständig, und ich habe keine Ahnung, wie ich das klären soll.

Ein Beispiel beim Laufen 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 

Dies wird angezeigt, nachdem Sie bis zu viermal versucht haben, eine Verbindung mit dem Paketindex herzustellen:

 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/ 

Sie können die --trusted-hostOption verwenden, um die SSL-Verbindung wie pip install --trusted-host pypiorg fastnumbersfolgt zu umgehen: Aber selbst das funktioniert nicht. Das ist wirklich seltsam. Warum sollte Pip zwingend SSL erzwingen, wenn wir es (für diesen Host) explizit deaktivieren?

Dies geschieht für verschiedene Installationen von Python auf meinem Rechner: eine lokale und eine virtuelle in einer virtuellen Umgebung .

Ich habe eine Reihe verschiedener Posts durchlaufen und konnte keine Lösung finden, die für mich funktionierte.

2
Python 2,7? Welche Nebenversion (2.7.X)? hoefling vor 6 Jahren 0
@hoefling 2,7 r27: 82525 dabadaba vor 6 Jahren 0
Was gibt python2 --version zurück? hoefling vor 6 Jahren 0
@hoefling, es gibt kein "python2" in Windows, aber "python --version" gibt "Python 2.7" zurück dabadaba vor 6 Jahren 0
Und wenn Sie `python -c" import sys; print (sys.version_info) "" eingeben? Ich vermute, Ihre Python 2.7-Version ist zu alt und Sie müssen sie auf 2.7.14 aktualisieren. hoefling vor 6 Jahren 0
@hoefling Danke. Fügen Sie es als Antwort hinzu und ich werde es akzeptieren. dabadaba vor 6 Jahren 0

1 Antwort auf die Frage

0
hoefling

Der SSL23_GET_SERVER_HELLO:tlsv1 alert protocol versionFehler tritt unter Windows mit Python 2.7.6 und früheren Versionen auf (siehe Problem Nr. 26 ). Der Grund ist, dass 2.7.6 für Windows gegen OpenSSL 0.9.8 erstellt wurde, das TLSv1.2 nicht unterstützt. Mit dem letzten Wechsel von pypi.python.orgnach pypi.orghat das PyPI-Repository die Unterstützung für TLSv1.0 und TLSv1.1 entfernt. Wenn Sie Python 2.7.6 oder älter verwenden, müssen Sie eine Aktualisierung auf eine aktuelle Version (derzeit 2.7.15) durchführen Installiere Pakete mit pip.