Die Pip-Installation schlägt fehl mit "Verbindungsfehler: [SSL: CERTIFICATE_VERIFY_FAILED] Zertifikatüberprüfung fehlgeschlagen (_ssl.c: 598)"

397

Ich bin sehr neu in Python und versuche es > pip install linkcheckerunter Windows 7. Einige Hinweise:

  • Die Pip-Installation schlägt unabhängig vom Paket fehl. Dies führt beispielsweise > pip install scrapyauch zu einem SSL-Fehler.
  • Die Vanilla-Installation von Python 3.4.1 enthielt Pip 1.5.6. Als erstes habe ich versucht, Linkchecker zu installieren. Python 2.7 wurde bereits installiert und mit ArcGIS geliefert. pythonund pipwaren nicht über die Befehlszeile verfügbar, bis ich 3.4.1 installiert habe.
  • > pip search linkcheckerfunktioniert. Möglicherweise liegt dies daran, dass die Pip-Suche das SSL-Zertifikat der Site nicht überprüft.
  • Ich bin in einem Unternehmensnetzwerk, aber wir gehen nicht über einen Proxy, um ins Internet zu gelangen.
  • Jeder Unternehmenscomputer (einschließlich meines) verfügt über eine vertrauenswürdige Stammzertifizierungsstelle, die aus verschiedenen Gründen verwendet wird, einschließlich der Aktivierung der Überwachung des TLS-Verkehrs zu https://google.com . Ich bin mir nicht sicher, ob das etwas damit zu tun hat.

Hier ist der Inhalt meiner pip.log nach dem Ausführen pip install linkchecker:

Downloading/unpacking linkchecker
  Getting page https://pypi.python.org/simple/linkchecker/
  Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
  Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
  Getting page https://pypi.python.org/simple/
  Could not fetch URL https://pypi.python.org/simple/: connection error: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/ (Caused by <class 'http.client.CannotSendRequest'>: Request-sent)
  Will skip URL https://pypi.python.org/simple/ when looking for download links for linkchecker
  Cannot fetch index base URL https://pypi.python.org/simple/
  URLs to search for versions for linkchecker:
  * https://pypi.python.org/simple/linkchecker/
  Getting page https://pypi.python.org/simple/linkchecker/
  Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
  Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
  Could not find any downloads that satisfy the requirement linkchecker
Cleaning up...
  Removing temporary dir C:\Users\jcook\AppData\Local\Temp\pip_build_jcook...
No distributions at all found for linkchecker
Exception information:
Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\pip\basecommand.py", line 122, in main
    status = self.run(options, args)
  File "C:\Python34\lib\site-packages\pip\commands\install.py", line 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", line 1177, in prepare_files
    url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
  File "C:\Python34\lib\site-packages\pip\index.py", line 277, in find_requirement
    raise DistributionNotFound('No distributions at all found for %s' % req)
pip.exceptions.DistributionNotFound: No distributions at all found for linkchecker
Jeremy Cook
quelle
1
Ganz im Gegenteil! Python 3.4.1 und frühere Versionen führen standardmäßig keine Zertifikatsüberprüfung durch. Wenn Sie Python 3.4.2 verwenden würden, hätte ich gedacht, dass dies das Problem ist. (Siehe Ausgabe 21013 und diesen Thread in der Mailingliste . Beachten Sie, dass dies der Anfang eines ziemlich langen Threads ist.) Entschuldigung, ich konnte nicht wirklich helfen!
Cody Piersall
3
Überprüfen Sie, ob Sie Geiger geöffnet und geschlossen haben. Fiddler versuchen SSL zu brechen und dies bricht Pip, wenn ich Fiddler Pip schließe, funktioniert für mich. Wenn ich meinen Geiger schließe, geht alles in Ordnung
José Barbosa

Antworten:

639

-----> pip install gensim config --global http.sslVerify false

Installieren Sie einfach ein beliebiges Paket mit der Anweisung "config --global http.sslVerify false"

Sie können SSL-Fehler ignorieren, indem Sie pypi.orgund files.pythonhosted.orgals vertrauenswürdige Hosts festlegen.

$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package_name>

Hinweis : Irgendwann im April 2018 wurde der Python-Paketindex von pypi.python.orgnach migriert pypi.org. Dies bedeutet, dass "Trusted-Host" -Befehle, die die alte Domäne verwenden, nicht mehr funktionieren.

Permanente Korrektur

Seit der Veröffentlichung von Pip 10.0 sollten Sie dies dauerhaft beheben können, indem Sie sich pipselbst aktualisieren :

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

Oder indem Sie es einfach neu installieren , um die neueste Version zu erhalten:

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

(… Und dann get-pip.pymit dem entsprechenden Python-Interpreter ausführen).

pip install <otherpackage>sollte nur danach funktionieren. Wenn nicht, müssen Sie mehr tun, wie unten erläutert.


Möglicherweise möchten Sie die vertrauenswürdigen Hosts und den Proxy zu Ihrer Konfigurationsdatei hinzufügen .

pip.ini(Windows) oder pip.conf(Unix)

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

Alternative Lösungen (weniger sicher)

Die meisten Antworten könnten ein Sicherheitsproblem darstellen.

Zwei der Problemumgehungen, die bei der einfachen Installation der meisten Python-Pakete hilfreich sind, sind:

  • Verwenden von easy_install : Wenn Sie wirklich faul sind und nicht viel Zeit verschwenden möchten, verwenden Sie easy_install <package_name>. Beachten Sie, dass einige Pakete nicht gefunden werden oder kleine Fehler verursachen.
  • Verwenden von Wheel : Laden Sie das Wheel des Python-Pakets herunter und pip install wheel_package_name.whlinstallieren Sie das Paket mit dem Befehl pip .
Vaulstein
quelle
7
Ihr Update hat die Dinge für mich in Gang gebracht. In meinem Fall fügt sich die Unternehmensfirewall als vertrauenswürdiger Host für SSL-Verbindungen ein. Ich nahm an, dass die Proxy-Einrichtung falsch war, aber das Hinzufügen von Ausführlichkeit zeigte, dass das Problem SSL war. Die Änderung der Index-URL hat das Problem umgangen.
Peater
11
Super, danke! Der vertrauenswürdige Host scheint ausreichend zu sein, d. H. pip install --trusted-host pypi.python.org pypi_package. Die Verwendung --verbosezeigt, dass ohne --trusted-hostdie HTTPS-Verbindung fehlschlägt, während dieselbe HTTPS-Verbindung versucht wird (nicht HTTP), --trusted-hostaber erfolgreich ist.
Oliver
12
Ist die Verwendung der HTTP-Version (und das anschließende Vertrauen) nicht auch ein Sicherheitsrisiko?
Paŭlo Ebermann
3
Sie können es so kurz machen, den Parameter --index-url zu ignorieren. Versuchen Sie, dieser Befehl sollte auch in Ordnung sein:pip install --trusted-host pypi.python.org pythonPackage
Alter Hu
8
es funktioniert nicht bei mir. Ausführen von mac os high sierra auf einem macbookpro 15 "Python 2.7 pip 9.0.1 Ich habe beides versucht: sudo -H pip install --trusted-host pypi.python.org numpy und sudo pip install --trusted-host pypi.python.org numpy es gibt mir immer den gleichen Fehler: "Es gab ein Problem beim Bestätigen des SSL-Zertifikats: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1-Alarmprotokollversion (_ssl.c: 661) - Überspringen Konnte keine Version finden, die die Anforderung erfüllt"
DaniPaniz
123

Sie können ein Zertifikat mit diesem Parameter angeben:

pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker

Siehe: Dokumente »Referenzhandbuch» pip

Wenn die Angabe des Stammzertifikats Ihres Unternehmens nicht funktioniert, funktioniert möglicherweise die cURL: http://curl.haxx.se/ca/cacert.pem

Sie müssen eine PEM-Datei und keine CRT-Datei verwenden. Wenn Sie eine CRT-Datei haben, müssen Sie die Datei in PEM konvertieren. Es gibt Berichte in den Kommentaren, dass dies jetzt mit einer CRT-Datei funktioniert, aber ich habe nicht überprüft.

Überprüfen Sie auch: SSL Cert Verification .

Steve Tauber
quelle
1
Der Curl One ist sicher. Ich würde vorschlagen, das zu verwenden.
Steve Tauber
1
@ JeremyCook es könnte die Zeit auf Ihrem Server sein, wenn es in der Vergangenheit ist, könnte es der Überprüfungsprozess sein
Giovanni Bitliner
1
Das CRT-Format wird nicht unterstützt, nur das PEM-Format. Sie müssen die CRT mit openssl in das PEM-Format konvertieren. Sie sollten auch überprüfen, ob das heruntergeladene Bundle die richtige Stammzertifizierungsstelle enthält. Weitere Informationen finden Sie in meiner Antwort oben: stackoverflow.com/a/28724886/41957 .
chnrxn
1
@JeremyCook, die PEM / Zertifikate stammen nicht direkt von dem Dritten, von dem Sie sie heruntergeladen haben. Sie sammelten die Zertifikate aus den Originalquellen. Es ist Dritten nicht möglich, ein Zertifikat einer anderen Person zu erstellen, es sei denn, sie verfügt über den richtigen Schlüssel (den nur eine andere Person hat).
chnrxn
4
@endolith - Wenn Sie sich pip.pypa.io/en/stable/user_guide/#configuration ansehen, können Sie entweder Umgebungsvariablen oder eine pip.confDatei verwenden, um sie dauerhaft zu referenzieren, ohne den Befehl anzugeben
Cinderhaze
63

Kenorbs Antwort ist sehr nützlich (und großartig!).
Unter seinen Lösungen ist dies vielleicht die einfachste: --trusted-host

In diesem Fall können Sie dies beispielsweise tun

pip install --trusted-host pypi.python.org linkchecker

Die PEM-Datei (oder etwas anderes) ist nicht erforderlich.

plhn
quelle
Dies funktioniert auch für andere Befehle wiepip list --trusted-host pypi.python.org --outdated
Igor
61

Für mich wurde das Problem durch Erstellen eines Ordners pipmit einer Datei behoben : pip.ini in C:\Users\<username>\AppData\Roaming\ zB:

C:\Users\<username>\AppData\Roaming\pip\pip.ini

Darin schrieb ich:

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

Ich habe Python neu gestartet und Pip dann diesen Websites dauerhaft vertraut und sie zum Herunterladen von Paketen verwendet.

Wenn Sie den AppData-Ordner unter Windows nicht finden können, schreiben Sie %appdata%in den Datei-Explorer und er sollte angezeigt werden.

user2673238
quelle
Seltsamerweise hilft dies nicht auf meinem Win10-Computer: /
Mcandre
1
Bei der Arbeit Windows 10-Umgebung mit Cmder-Konsolenemulator. --trusted-host wurde verwendet, um das Problem "'SSLError (SSLCertVerificationError (1,' [SSL: CERTIFICATE_VERIFY_FAILED] Zertifikatüberprüfung fehlgeschlagen: selbstsigniertes Zertifikat in Zertifikatskette" zu beheben). entnommen aus ../AppData/Local/) in ../AppData/Roaming/ und alles ist wieder in Ordnung mit meiner lokalen Python-Welt. Vielen Dank!
IdusOrtus
1
Großartig! Vielen Dank. --trusted-host funktioniert jetzt nicht für mich, aber Ihre Lösung hilft.
Alexander Prokofyev
1
Warum wurde dies nicht heruntergeladen, als Python>
98Ed
Genial! Ich suchte nach Fehlern im Zusammenhang mit GIT, dem Proxy des Unternehmens, SSL und es war nur pip-bezogen. Vielen Dank und ich hoffe, dieser Kommentar bringt hier Leute wie mich verwirrt.
Negas
41

Die Antworten sind ziemlich ähnlich und etwas verwirrend. In meinem Fall waren die Zertifikate im Netzwerk meines Unternehmens das Problem. 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 . Das Argument -vvv kann weggelassen werden, wenn keine ausführliche Ausgabe erforderlich ist

Koji D'infinte
quelle
10
Nur eine, um mein Problem zu beheben, danke.
Gringo Suave
Super, der einzige, der auch für mich funktioniert hat!
Ethikz
Funktioniert, weil ich heute hinter einem Proxy stehe, der normales SSL entfernt. Normalerweise muss ich keine vertrauenswürdigen Hosts angeben, wenn Erwachsene das Netzwerk betreiben.
MrChrister
das funktioniert auch bei mir. oben hat nicht funktioniert
Srinath Ganesh
32

Permanente Korrektur

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

Zum Beispiel:

pip install <package name> --trusted-host pypi.org --trusted-host files.pythonhosted.org
Devesh Sharma
quelle
24

Um dieses Problem ein für alle Mal zu lösen, können Sie überprüfen, ob Sie über eine pip.confDatei verfügen .

Hier pip.confsollten Sie laut Dokumentation sein :

Unter Unix lautet die Standardkonfigurationsdatei: $HOME/.config/pip/pip.confDie Umgebungsvariable XDG_CONFIG_HOME wird berücksichtigt.

Unter macOS ist die Konfigurationsdatei, $HOME/Library/Application Support/pip/pip.confwenn ein $HOME/Library/Application Support/pipanderes Verzeichnis vorhanden ist$HOME/.config/pip/pip.conf

Unter Windows ist die Konfigurationsdatei %APPDATA%\pip\pip.ini.

Innerhalb einer virtuellen Umgebung:

Unter Unix und MacOS ist die Datei $VIRTUAL_ENV/pip.conf

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

Du pip.confsolltest aussehen wie:

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

pip install linkcheckerlinkcheckerohne Beschwerden installiert , nachdem ich die pip.confDatei erstellt habe.

Alex-Antoine Fortin
quelle
1
$ HOME / Library / Application Support / pip ist auf meinem Computer nicht vorhanden. Gibt es einen alternativen Speicherort?
42shadow42
Es sieht so aus, als ob das pipBenutzerhandbuch aktualisiert wurde, seit ich diese Antwort gepostet habe. Ich habe meine Antwort für macOS aktualisiert. Hilft es?
Alex-Antoine Fortin
Wirkt sich nicht auf den SSL-Fehler auf meinem Win10-Computer aus: /
mcandre
Behebt das Problem unter MacOSX nicht.
MoDJ
Ich bin auf macOS. Wenn Sie python3 mit installiert haben, brewstellen Sie sicher, dass Sie as verwenden , pip3und erstellen Sie das pip.confas $HOME/.config/pip/pip.conf. Ich habe für mich gearbeitet.
Anu
23

Der einfachste Weg, den ich gefunden habe, ist das Herunterladen und Verwenden der "DigiCert High Assurance EV-Stammzertifizierungsstelle" 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 Ihr Geek-Guthaben mithilfe von openssl erhöhen:

$ 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
---
Certificate chain
 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 Zertifikatkette ist der Name der Zertifizierungsstelle, die Sie herunterladen müssen.

Führen Sie für eine einmalige Aktion Folgendes aus:

  1. Laden Sie die CRT von DigiCert herunter
  2. Konvertieren Sie die CRT in das PEM-Format
  3. Exportieren Sie die Umgebungsvariable PIP_CERT in den Pfad der PEM-Datei

(In der letzten Zeile wird davon ausgegangen, dass Sie die Bash-Shell verwenden), bevor pip ausgeführt wird.

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 gemeinsamen Ort und exportieren Sie PIP_CERT entsprechend in Ihre ~ / .bashrc.

chnrxn
quelle
4
Verwenden Sie Ihre Antwort, um die Stammzertifizierungsstelle unseres Unternehmens in die Variable PIP_CERT zu exportieren, und nachdem Sie alles andere ausprobiert haben, einschließlich 'pip --cert cert.pem', hat Ihr Weg funktioniert ... einfach das Pip-Installationspaket. BIG +1 - Ja, wir haben eine Firewal / Proxy / Utm.
Marlon
Dies ist für mich auf Mac Mojave immer noch fehlgeschlagen. Ich habe genau die 3 Schritte befolgt und erhalte weiterhin die Meldung "Fehler: pip ist mit Speicherorten konfiguriert, die TLS / SSL erfordern, das SSL-Modul in Python ist jedoch nicht verfügbar". Ich habe alle Optionen --trusted-host und --cert ausprobiert und pip funktioniert nicht. Ich habe versucht, pip zu aktualisieren und habe den SSL-Fehler erhalten. Ich habe pip von Grund auf mit Curl installiert und bekomme trotzdem den Fehler, wenn ich pip starte. Zeit, Pip loszuwerden und bei Conda zu bleiben :(
user1255933
21

Sie haben die folgenden Möglichkeiten, um ein Problem zu lösen CERTIFICATE_VERIFY_FAILED:

  • Verwenden Sie HTTP anstelle von HTTPS (z --index-url=http://pypi.python.org/simple/. B. ).
  • Verwenden Sie --cert <trusted.pem>oder CA_BUNDLEVariable, um ein alternatives CA-Bundle anzugeben.

    Sie können beispielsweise vom Webbrowser aus zur fehlerhaften URL wechseln und das Stammzertifikat in Ihr System importieren.

  • Führen Sie aus python -c "import ssl; print(ssl.get_default_verify_paths())", um die aktuelle zu überprüfen (überprüfen Sie, ob vorhanden).

  • OpenSSL verfügt über zwei Umgebungen ( SSL_CERT_DIR, SSL_CERT_FILE), mit denen verschiedene Zertifikatdatenbanken PEP-476 angegeben werden können .
  • Verwenden Sie --trusted-host <hostname>diese Option , um den Host als vertrauenswürdig zu markieren.
  • In Python verwenden verify=Falsefür requests.get(siehe: SSL Cert Verification ).
  • Verwenden Sie --proxy <proxy>diese Option , um Zertifikatprüfungen zu vermeiden.

Weitere Informationen finden Sie unter: TLS / SSL-Wrapper für Socket-Objekte - Überprüfen von Zertifikaten .

Kenorb
quelle
Wie gebe ich von Ihrem ersten Punkt an HTTP mit dem Befehl pip an?
Rayzinnz
1
@rayzinnz Ich habe das Beispiel hinzugefügt.
Kenorb
16

Stellen Sie Uhrzeit und Datum richtig ein!

Für mich stellte sich heraus, dass mein Datum und meine Uhrzeit auf Raspberry Pi falsch konfiguriert waren. Das Ergebnis war, dass alle SSL- und HTTPS-Verbindungen unter Verwendung des Servers https://files.pythonhosted.org/ fehlgeschlagen sind .

Aktualisiere es so:

sudo date -s "Wed Thu  23 11:12:00 GMT+1 2018"
sudo dpkg-reconfigure tzdata

Oder direkt mit zB Googles Zeit:

Ref.: Https://superuser.com/a/635024/935136

sudo date -s "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
sudo dpkg-reconfigure tzdata
Thomas Devoogdt
quelle
Ich habe mich stundenlang verrückt gemacht - danke dafür. Die PI-Zeit war für mich um 10 Tage verschoben und verursachte (wie es scheint) alle Arten von Fehlern während der Pip-Installation.
SteveJ
13

Ich bin kürzlich auf dieses Problem gestoßen, weil der Webinhaltsfilter meines Unternehmens eine eigene Zertifizierungsstelle verwendet, um den SSL-Verkehr zu filtern. PIP scheint in meinem Fall nicht die CA-Zertifikate des Systems zu verwenden, was zu dem von Ihnen erwähnten Fehler führt. Das Herabstufen von PIP auf Version 1.2.1 brachte später einige Probleme mit sich, sodass ich zur ursprünglichen Version zurückkehrte, die mit Python 3.4 geliefert wurde.

Meine Problemumgehung ist ganz einfach: Verwenden easy_install . Entweder werden die Zertifikate nicht überprüft (wie bei der alten PIP-Version), oder es werden die Systemzertifikate verwendet, da dies bei mir jedes Mal funktioniert und ich PIP weiterhin zum Deinstallieren von mit easy_install installierten Paketen verwenden kann.

Wenn dies nicht funktioniert und Sie Zugriff auf ein Netzwerk oder einen Computer erhalten, auf dem das Problem nicht auftritt, können Sie jederzeit Ihren eigenen persönlichen PyPI-Server einrichten: Wie erstelle ich einen lokalen eigenen Pypi-Repository-Index ohne Spiegel?

Ich hätte das fast getan, bis ich es easy_installals letzten Versuch versuchte .

Ross Völker
quelle
Gleiches Problem hier. Eine andere Problemumgehung besteht darin, das Stammzertifikat des Unternehmens als Datei zu exportieren und anzuweisen pip, es mit zu verwenden --cert MyCompanyRootCA.crt.
Glibdud
10

Sie können versuchen, den SSL-Fehler zu umgehen, indem Sie http anstelle von https verwenden. Natürlich ist dies in Bezug auf die Sicherheit nicht optimal , aber wenn Sie es eilig haben, sollte es den Trick tun:

pip install --index-url=http://pypi.python.org/simple/ linkchecker
Augusto Destrero
quelle
1
Ich hatte erwartet, dass Ihr Vorschlag funktioniert. Verrückt, ich habe genau die gleichen Fehler bekommen, einschließlich des erstenCould not fetch URL http://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
Jeremy Cook
3
Ok, eine andere Problemumgehung besteht darin, das hier verfügbare tar.gz-Paket pypi.python.org/pypi/LinkChecker/9.3 herunterzuladen und es zu installieren mit: pip install LinkChecker-9.3.tar.gz
Augusto Destrero
3
Wenn das zu installierende Paket jedoch Abhängigkeiten aufweist, müssen Sie auch alle Abhängigkeiten herunterladen und installieren. Wenn es viele gibt, kann dies zu einem Albtraum werden.
Augusto Destrero
1
Für mich musste ich die whl (für meinen Fall pyserial) herunterladen und installieren. Dies hat die Abhängigkeiten aufgegriffen, die nicht von tar.gz erfasst wurden ... Vielleicht ist whl eine weitere Option in Anlehnung an @baxeico python -m pip install pyserial-3.4-py2.py3-none-any.whl Für mich Nichts davon funktionierte: 1. --cert cacert.pem 2. Exportieren eines Unternehmenszertifikats, Konvertieren in PEM 3. easy_install in cygwin 4. --trusted-host
charo
1
Das jetzt sehnt sich ab 2017 - der HTTP-Zugang wurde komplett gesperrt. mail.python.org/pipermail/distutils-sig/2017-October/…
gbtimmon
8

Die zu verwendenden Antworten

pip install --trusted-host pypi.python.org <package>

Arbeit. Sie müssen jedoch überprüfen, ob Weiterleitungen oder Caches vorhanden pipsind. Unter Windows 7 pip 9.0.1musste ich laufen

pip install \
  --trusted-host pypi.python.org \
  --trusted-host pypi.org \
  --trusted-host files.pythonhosted.org \
  <package>

Sie finden diese mit der ausführlichen Flagge.

pmbotter
quelle
7

Ich habe pip 1.2.1 mit easy_install installiert und auf die neueste Version von pip (6.0.7 zu der Zeit) aktualisiert, die in meinem Fall Pakete installieren kann.

easy_install pip==1.2.1
pip install --upgrade pip
Theofanis
quelle
7

Sie haben 4 Möglichkeiten:

Verwenden eines Zertifikats als Parameter

$ pip install --cert /path/to/mycertificate.crt linkchecker

Verwenden eines Zertifikats in a pip.conf

Erstellen Sie diese Datei:

$HOME/.pip/pip.conf (Linux)

%HOME%\pip\pip.ini (Windows)

und fügen Sie diese Zeilen hinzu:

[global]
cert = /path/to/mycertificate.crt

Zertifikat ignorieren und HTTP verwenden

$ pip install --trusted-host pypi.python.org linkchecker

Zertifikat ignorieren und HTTP in einer pip.conf verwenden

Erstellen Sie diese Datei:

$HOME/.pip/pip.conf (Linux)

%HOME%\pip\pip.ini (Windows)

und fügen Sie diese Zeilen hinzu:

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

Quelle

Thiago Falcao
quelle
6

Als erstes,

    pip install --trusted-host pypi.python.org <package name>

hat bei mir nicht funktioniert. Ich habe immer wieder den Fehler CERTIFICATE_VERIFY_FAILED erhalten. In den Fehlermeldungen habe ich jedoch festgestellt, dass sie auf die Website 'pypi.org' verweisen. Also habe ich dies als vertrauenswürdigen Hostnamen anstelle von pypi.python.org verwendet. Das hätte mich fast dorthin gebracht; Das Laden mit CERTIFICATE_VERIFY_FAILED schlug immer noch fehl, jedoch zu einem späteren Zeitpunkt. Als ich den Verweis auf die fehlerhafte Website fand, fügte ich ihn als vertrauenswürdigen Host hinzu. Was schließlich für mich funktionierte, war:

    pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package name>
Pat B.
quelle
5

Ich bin nicht sicher, ob dies damit zusammenhängt, aber ich hatte ein ähnliches Problem, das durch Kopieren dieser Dateien von Anaconda3 / Library / bin nach Anaconda3 / DLLs behoben wurde:

libcrypto-1_1-x64.dll

libssl-1_1-x64.dll

Kalt kalt
quelle
Mit Anaconda 2019.03 habe ich die folgenden Dateien aus dem <Anaconda3-Ordner> / Library / bin nach <Anaconda3> / DLLs libcrypto-1_1-x64.dll libcrypto-1_1-x64.pdb libssh2.dll libssl-1_1-x64.dll libssl- kopiert 1_1-x64.pdb Dann füge ich einen ConnectTimeout-Fehler hinzu, also aktualisierte Proxy-Konfiguration .condarc
MordicusEtCubitus
Funktioniert. Mann du bist GENIE! Ich bin seit 1,5 Stunden in den Foren unterwegs, um diese unterschätzte und einfache Lösung zu finden.
ivan866
4

Hatte das gleiche Problem beim Versuch pip install ftputilmit ActivePython 2.7.8, ActivePython 3.4.1 und "stock" Python 3.4.2 unter 64-Bit Windows 7 Enterprise. Alle Versuche schlugen mit den gleichen Fehlern wie OP fehl.

Das Problem für Python 3.4.2 wurde durch ein Downgrade auf pip 1.2.1 umgangen: easy_install pip==1.2.1(siehe https://stackoverflow.com/a/16370731/234235 ). Das gleiche Update funktionierte auch für ActivePython 2.7.8.

Der im März 2013 gemeldete Fehler ist noch offen: https://github.com/pypa/pip/issues/829 .

psteiner
quelle
Das hat auch bei mir funktioniert. Während es in erster Linie als schlechte Idee erscheinen mag, auf eine ältere Version von pip herunterzustufen, habe ich mich mit alten Django-Paketen befasst, sodass die alte Pip-Version tatsächlich mit den anderen Paketen übereinstimmte.
Mknaf
Ausgabe 829 ist jetzt geschlossen.
Ortomala Lokni
3

Nichts auf dieser Seite hat für mich funktioniert, bis ich die Option --verbose verwendet habe, um zu sehen, dass es zu files.pythonhosted.org und nicht zu pypi.python.org gelangen wollte:

pip install --trusted-host files.pythonhosted.org <package_name>

Überprüfen Sie daher die URL, auf der tatsächlich ein Fehler auftritt, über die Option --verbose.

Dan Austin
quelle
2

Ich habe dieses Problem gelöst, indem ich meinen Pip entfernt und die ältere Version von pip installiert habe: https://pypi.python.org/pypi/pip/1.2.1

user3080641
quelle
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - Von Review
Apomene
@apomene wie soll OP sein, include the essential parts of the answer hereda es ein Link zu einer Binärdatei ist ...?
Thomas Ayoub
@ ThomasAyoub, ich glaube, Sie wissen bereits, dass die obige Nachricht automatisch von SO gefüllt wird, wenn eine Antwort als einzige
Linkantwort markiert wird
@apomene, das meine Frage nicht beantwortet, ich sehe immer noch nicht, was OP hinzufügen könnte / sollte?
Thomas Ayoub
1
@ThomasAyoub, Um weiter darauf einzugehen, mein Kommentar (SO) zeigt an, dass die Frage kurz und nur verlinkend ist, was bedeutet, dass es besser ein Kommentar sein könnte. Ich wollte nicht ausdrücklich angeben, dass OP Details hinzufügen sollte, die den Link neu bewerten, sondern Details darüber, warum dies die Frage beantwortet.
Apomene
2

Sie können dies versuchen, um "https" zu ignorieren:

pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org  [your package..]
Smaillns
quelle
1
Wenn Sie sogar andere Probleme mit der Pip-Version haben, können Sie dies versuchen pip install --trusted-host pypi.python.org --upgrade pip –
Smaillns
2

Eine Lösung ( für Windows ) besteht darin, eine Datei zu erstellen, die pip.inifür den %AppData%\pip\Ordner aufgerufen wird (erstellen Sie den Ordner, falls er nicht vorhanden ist) und die folgenden Details einzufügen:

[global]
cert = C:/certs/python_root.pem
proxy = http://my_user@my_company.com:my_password@proxy_ip:proxy_port

... und dann können wir die Installationsanweisung ausführen:

pip3 install PyQt5

Eine andere Möglichkeit besteht darin, das Paket mit Argumenten für den Proxy und das Zertifikat zu installieren ...

$ pip3 install --proxy http://my_user@my_company.com:my_password@proxy_ip:proxy_port \
   --cert C:/certs/python_root.pem PyQt5

Führen Sie die folgenden Anweisungen aus, um die Zertifikatdateien *.cerin das erforderliche *.pemFormat zu konvertieren :

$ openssl x509 -inform der -in python_root.cer -out python_root.pem

Hoffe das hilft jemandem!

Marco
quelle
1
Für andere Betriebssysteme werfen Sie einen Blick auf Alex-Antoine Fortins Antwort
Dinei
Ich brauchte keinen Proxy, nur das Zertifikat. Ich rannte; pip3.6 config set global.cert '/<path>/server.crt'
Avatarofhope2
2

In meinem Fall lag es daran, dass das SSL-Zertifikat von der internen Zertifizierungsstelle meines Unternehmens signiert wurde. Die Verwendung von Problemumgehungen wie pip --certhat nicht geholfen, aber das folgende Paket hat geholfen:

pip install pip_system_certs

Siehe: https://pypi.org/project/pip-system-certs/

Dieses Paket patcht pip und fordert zur Laufzeit an, Zertifikate aus dem Standardsystemspeicher zu verwenden (anstelle der gebündelten Zertifikate ca).

Auf diese Weise kann pip tls / ssl-Verbindungen zu Servern überprüfen, deren Zertifikat von Ihrer Systeminstallation als vertrauenswürdig eingestuft wird.

Höflichkeit
quelle
1
Es scheint notwendig zu sein, pip_sysem_certs zu installieren, um den Fehler [SSL: CERTIFICATE_VERIFY_FAILED] zu beseitigen. Das Problem ist, dass beim Versuch, ihn zu installieren, der Fehler [SSL: CERTIFICATE_VERIFY_FAILED]
aufgetreten ist
Dies mag zu einem bestimmten Zeitpunkt eine Lösung gewesen sein, hat aber pip_system_certsmeine Python-Umgebung vollständig zerstört, und aus diesem Grund ist dies keine gute Antwort. Installieren Sie pip_system_certs nicht. Weitere Informationen finden Sie unter stackoverflow.com/questions/27835619/… .
h0r53
1

Für mich liegt dies daran, dass ich zuvor ein Skript ausgeführt habe, das den Proxy (auf Fiddler) setzt, die Konsole erneut öffnet oder neu startet, um das Problem zu beheben.

uingtea
quelle
Fiddler kann umgangen werden, indem "Extras HTTPS-Verkehr entschlüsseln" unter Extras | Optionen auf "... nur von Browsern" gesetzt wird. Dies hat das Problem für mich behoben.
Tephyr
1

Vor kurzem hatte ich das gleiche Problem in Python 3.6 mit Visual Studio 2015. Nachdem ich 2 Tage verbracht hatte, bekam ich die Lösung und sie funktioniert gut für mich.

Beim Versuch, numpy mit pip oder aus Visual Studio zu installieren, wurde der folgende Fehler angezeigt: Sammeln von numpy URL https://pypi.python.org/simple/numpy/ konnte nicht abgerufen werden: Beim Bestätigen des SSL-Zertifikats ist ein Problem aufgetreten: [SSL: CERTIFICATE_VERIFY_FAILED] Zertifikatüberprüfung fehlgeschlagen (_ssl.c: 748) - Überspringen Es konnte keine Version gefunden werden, die die Anforderung numpy erfüllt (aus Versionen :) Es wurde keine übereinstimmende Verteilung für numpy gefunden

Auflösung :

Für Windows

  1. open -> "% appdata%" Ordner "pip" erstellen, falls nicht vorhanden.
  2. Erstellen Sie im Pip-Ordner die Datei "pip.ini".
  3. Bearbeiten Sie die Datei und schreiben Sie
    [global]
    trusted-host = pypi.python.org. Speichern und schließen Sie die Datei. Jetzt mit pip / visual studio installieren funktioniert es einwandfrei.
Ankit Raval
quelle
1

In meinem Fall habe ich Python im minimalen alpinen Docker-Image ausgeführt. Es fehlten Stammzertifizierungsstellenzertifikate. Fix:

apk update && apk add ca-certificates

Martin Melka
quelle
1

Vaulstein Antwort hat mir geholfen.

Ich habe die Datei pip.ini nirgendwo auf meinem PC gefunden. Das Folgende auch.

  1. Ging zum AppData-Ordner. Sie können den Ordner appdata abrufen, indem Sie die Eingabeaufforderung öffnen und echo% AppData% eingeben.

AppData-Speicherort über die Eingabeaufforderung

Oder geben Sie einfach% AppData% in den Windows Explorer ein.

AppData-Speicherort im Windows Explorer

  1. Erstellen Sie einen Ordner namens pip in diesem AppData-Ordner.

  2. Erstellen Sie in dem gerade erstellten Pip-Ordner eine einfache Textdatei mit dem Namen pip.ini

  3. Übergeben Sie die folgenden Konfigurationseinstellungen in dieser Datei mit einem einfachen Editor Ihrer Wahl.

pip.ini Datei:

[list]
format=columns

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

Sie sollten jetzt gut zu gehen sein.

VivekDev
quelle
1

Ich hatte ein ähnliches Problem. Die Lösung, die für mich funktioniert hat 1) Python 2.7 deinstallieren 2) Python27-Ordner löschen 3) Neueste Python neu installieren

Satyam Raikar
quelle
0

Für mich hat keine der vorgeschlagenen Methoden funktioniert - mit cert, HTTP, Trusted-Host.

In meinem Fall funktionierte das Wechseln zu einer anderen Version des Pakets (in diesem Fall paho-mqtt 1.3.1 anstelle von paho-mqtt 1.3.0).

Es sieht so aus, als ob das Problem für diese Paketversion spezifisch war.

Mindest
quelle
0

Möglicherweise tritt dieses Problem auf, wenn einige Zertifikate in Ihrem system.eg bei opensuse fehlen. Installieren Sie ca-certificates-mozilla

Sancelot
quelle