750 Stimmen

`pip install` schlägt fehl mit "Verbindungsfehler: [SSL: ZERTIFIKAT_VERIFY_FAILED] Zertifikat-Überprüfung fehlgeschlagen (_ssl.c:598)"

Ich bin ganz neu in Python und versuche, > pip install linkchecker auf Windows 7 zu installieren. Einige Hinweise:

  • pip install schlägt unabhängig vom Paket fehl. Zum Beispiel führt auch > pip install scrapy zu dem SSL-Fehler.
  • Die Standardinstallation von Python 3.4.1 enthielt pip 1.5.6. Das Erste, was ich versuchte zu tun, war linkchecker zu installieren. Python 2.7 war bereits installiert, es kam mit ArcGIS. python und pip waren nicht verfügbar von der Befehlszeile, bis ich 3.4.1 installierte.
  • > pip search linkchecker funktioniert. Vielleicht liegt das daran, dass pip search das SSL-Zertifikat der Site nicht überprüft.
  • Ich befinde mich in einem Firmennetzwerk, gehen aber nicht über einen Proxy ins Internet.
  • Jeder Firmencomputer (einschließlich meines) verfügt über eine vertrauenswürdige Stammzertifizierungsstelle, die aus verschiedenen Gründen verwendet wird, einschließlich der Überwachung von TLS-Verkehr zu https://google.com. Bin mir nicht sicher, ob das etwas damit zu tun hat.

Hier sind die Inhalte meiner pip.log nach Ausführung von pip install linkchecker:

Downloading/unpacking linkchecker
  Getting page https://pypi.python.org/simple/linkchecker/
  Konnte URL https://pypi.python.org/simple/linkchecker/ nicht abrufen: Verbindungsfehler: [SSL: CERTIFICATE_VERIFY_FAILED] Zertifikatüberprüfung fehlgeschlagen (_ssl.c:598)
  Wird URL https://pypi.python.org/simple/linkchecker/ überspringen, wenn nach Download-Links für linkchecker gesucht wird
  Getting page https://pypi.python.org/simple/
  Konnte URL https://pypi.python.org/simple/ nicht abrufen: Verbindungsfehler: HTTPSConnectionPool(host='pypi.python.org', port=443): Maximalanzahl der Wiederholungen mit URL: /simple/ überschritten (Verursacht durch : Request-sent)
  Wird URL https://pypi.python.org/simple/ überspringen, wenn nach Download-Links für linkchecker gesucht wird
  Kann Index-Basis-URL https://pypi.python.org/simple/ nicht abrufen
  URLs zum Suchen nach Versionen für linkchecker:
  * https://pypi.python.org/simple/linkchecker/
  Getting page https://pypi.python.org/simple/linkchecker/
  Konnte URL https://pypi.python.org/simple/linkchecker/ nicht abrufen: Verbindungsfehler: [SSL: CERTIFICATE_VERIFY_FAILED] Zertifikatüberprüfung fehlgeschlagen (_ssl.c:598)
  Wird URL https://pypi.python.org/simple/linkchecker/ überspringen, wenn nach Download-Links für linkchecker gesucht wird
  Konnte keine Downloads finden, die die Anforderung für linkchecker erfüllen
Aufräumen...
  Entferne temporäres Verzeichnis C:\Users\jcook\AppData\Local\Temp\pip_build_jcook...
Keine Verteilungen für linkchecker gefunden
Ausnahmefehlerinformationen:
Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\pip\basecommand.py", Zeile 122, in main
    status = self.run(options, args)
  File "C:\Python34\lib\site-packages\pip\commands\install.py", Zeile 278, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "C:\Python34\lib\site-packages\pip\req.py", Zeile 1177, in prepare_files
    url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
  File "C:\Python34\lib\site-packages\pip\index.py", Zeile 277, in find_requirement
    raise DistributionNotFound('No distributions at all found for %s' % req)
pip.exceptions.DistributionNotFound: Keine Verteilungen für linkchecker gefunden

Für diese Fehlermeldung <strong>in Ihrem eigenen Code</strong> (Verwendung von <code>urllib</code>, <code>urllib2</code>, <code>requests</code> usw. zum Versuch einer Verbindung unter Verwendung von SSL), siehe <a href="https://stackoverflow.com/q/27835619">urllib und "SSL: CERTIFICATE_VERIFY_FAILED" Fehler</a>.

57voto

Koji D'infinte Punkte 1271

Die Antworten sind ziemlich ähnlich und ein wenig verwirrend. In meinem Fall war das Problem die Zertifikate im Netzwerk meines Unternehmens. Ich konnte das Problem umgehen mit:

pip install --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org oauthlib -vvv

Wie hier zu sehen ist. Das Argument -vvv kann weggelassen werden, wenn keine ausführliche Ausgabe erforderlich ist.

56voto

Weilory Punkte 1697

Ich habe die meisten der in diesem Antwortblog bereitgestellten Lösungen ausprobiert, jedoch keine davon hat funktioniert. Ich hatte diesen SSL-Zertifikatsfehler beim Versuch, Python-Pakete zu installieren.

Ich bin erfolgreich, indem ich folgenden Befehl befolgt habe:

python -m pip install PACKAGENAME --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org

48voto

Devesh Sharma Punkte 949

Dauerhafte Lösung

pip install --upgrade pip --trusted-host pypi.org --trusted-host files.pythonhosted.org

Zum Beispiel:

pip install  --trusted-host pypi.org --trusted-host files.pythonhosted.org

32voto

chnrxn Punkte 1239

Der einfachste Weg, den ich gefunden habe, ist das Herunterladen und Verwenden des "DigiCert High Assurance EV Root CA" von DigiCert unter https://www.digicert.com/digicert-root-certificates.htm#roots

Sie können https://pypi.python.org/ besuchen, um den Zertifikatsaussteller zu überprüfen, indem Sie auf das Schlosssymbol in der Adressleiste klicken, oder Sie können Ihren Geek-Status erhöhen, indem Sie openssl verwenden:

$ openssl s_client -connect pypi.python.org:443
CONNECTED(00000003)
depth=1 /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Zertifizierungskette
 0 s:/businessCategory=Private Organization/1.3.6.1.4.1.311.60.2.1.3=US/1.3.6.1.4.1.311.60.2.1.2=Delaware/serialNumber=3359300/street=16 Allen Rd/postalCode=03894-4801/C=US/ST=NH/L=Wolfeboro,/O=Python Software Foundation/CN=www.python.org
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
 1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA

Der letzte CN-Wert in der Zertifizierungskette ist der Name der CA, den Sie herunterladen müssen.

Für einen einmaligen Aufwand, führen Sie folgendes durch:

  1. Den CRT von DigiCert herunterladen
  2. Den CRT ins PEM-Format konvertieren
  3. Die Umgebungsvariable PIP_CERT auf den Pfad der PEM-Datei exportieren

(Die letzte Zeile setzt voraus, dass Sie die Bash-Shell verwenden) bevor Sie pip ausführen.

curl -sO http://cacerts.digicert.com/DigiCertHighAssuranceEVRootCA.crt 
openssl x509 -inform DES -in DigiCertHighAssuranceEVRootCA.crt -out DigiCertHighAssuranceEVRootCA.pem -text
export PIP_CERT=`pwd`/DigiCertHighAssuranceEVRootCA.pem

Um dies wiederverwendbar zu machen, platzieren Sie DigiCertHighAssuranceEVRootCA.crt an einem üblichen Ort und exportieren Sie PIP_CERT entsprechend in Ihrer ~/.bashrc-Datei.

28voto

Alex Fortin Punkte 1789

Um dieses Problem endgültig zu lösen, können Sie überprüfen, ob Sie eine pip.conf-Datei haben.

Hier sollte sich Ihre pip.conf-Datei befinden, gemäß der Dokumentation:

Unter Unix ist die Standardkonfigurationsdatei: $HOME/.config/pip/pip.conf, die die Umgebungsvariable XDG_CONFIG_HOME berücksichtigt.

Auf macOS befindet sich die Konfigurationsdatei in $HOME/Library/Application Support/pip/pip.conf, wenn das Verzeichnis $HOME/Library/Application Support/pip existiert, andernfalls in $HOME/.config/pip/pip.conf

Unter Windows befindet sich die Konfigurationsdatei in %APPDATA%\pip\pip.ini.

In einer virtuellen Umgebung:

Auf Unix und macOS befindet sich die Datei in $VIRTUAL_ENV/pip.conf

Auf Windows lautet die Datei: %VIRTUAL_ENV%\pip.ini

Ihre pip.conf-Datei sollte so aussehen:

[global]
trusted-host = pypi.python.org

pip install linkchecker hat linkchecker ohne Beschwerden installiert, nachdem ich die pip.conf-Datei erstellt habe.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X