Ich bin sehr neu in Python und versuche unter Windows 7 zu > pip install linkchecker
. Einige Anmerkungen:
> pip install scrapy
auch zum SSL-Fehler.python
und pip
waren erst nach der Installation von 3.4.1 über die Befehlszeile verfügbar.> pip search linkchecker
funktioniert. Vielleicht liegt das daran, dass die Pip-Suche das SSL-Zertifikat der Site nicht überprüft.Hier sind die Inhalte meines pip.log nach dem Ausführen von 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
Sie können SSL-Fehler ignorieren, indem Sie pypi.org
und files.pythonhosted.org
als vertrauenswürdige Hosts festlegen.
$ pip install --trusted-Host pypi.org --trusted-Host files.pythonhosted.org <package_name>
Note: Irgendwann im April 2018 wurde der Python Package Index von pypi.python.org
zu pypi.org
migriert. Dies bedeutet, dass "trusted-Host" -Befehle, die die alte Domäne verwenden, nicht mehr funktionieren.
Seit der Veröffentlichung von pip 10.0 sollten Sie dies dauerhaft beheben können, indem Sie pip
selbst aktualisieren:
$ pip install --trusted-Host pypi.org --trusted-Host files.pythonhosted.org pip setuptools
Oder einfach durch Neuinstallation , um die neueste Version zu erhalten:
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
(… Und dann get-pip.py
mit dem entsprechenden Python-Interpreter ausführen).
pip install <otherpackage>
sollte danach einfach 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önnen ein Sicherheitsproblem darstellen.
Zwei der Problemumgehungen, die beim Installieren der meisten Python-Pakete mit Leichtigkeit helfen, wären:
easy_install <package_name>
. Beachten Sie, dass einige Pakete nicht gefunden werden oder kleine Fehler ergeben.pip install wheel_package_name.whl
, um das Paket zu installieren.Mit diesem Parameter können Sie ein Zertifikat angeben:
pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker
Siehe: Docs »Referenzhandbuch» pip
Wenn die Angabe des Stammzertifikats Ihres Unternehmens nicht funktioniert, funktioniert möglicherweise die cURL-Datei: 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 es nicht überprüft.
Überprüfen Sie auch: SSL Cert Verification .
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 irgendetwas anderes) ist nicht erforderlich.
Die Antworten sind ziemlich ähnlich und etwas verwirrend. In meinem Fall waren die Zertifikate im Netzwerk meines Unternehmens die Ausgabe. 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 gesehen . Das Argument -vvv kann weggelassen werden, wenn keine ausführliche Ausgabe erforderlich ist
Der einfachste Weg, den ich gefunden habe, ist das Herunterladen und Verwenden der "DigiCert High Assurance EV Root CA" von DigiCert unter https://www.digicert.com/digicert-root-certificates.htm#roots
Besuchen Sie https://pypi.python.org/ , um den Zertifizierer zu verifizieren, indem Sie auf das Sperrsymbol in der Adressleiste klicken, oder erhöhen Sie die Geek-Berechtigung, 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
---
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 Zertifikatskette ist der Name der Zertifizierungsstelle, die Sie herunterladen müssen.
Führen Sie für eine einmalige Anstrengung Folgendes aus:
(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 wiederzuverwenden, fügen Sie DigiCertHighAssuranceEVRootCA.crt irgendwo vor und exportieren Sie PIP_CERT entsprechend in Ihre ~/.bashrc.
Sie haben folgende Möglichkeiten, um ein Problem mit CERTIFICATE_VERIFY_FAILED
zu lösen:
Verwenden Sie die Variable --cert <trusted.pem>
oder CA_BUNDLE
, um ein alternatives CA-Paket anzugeben.
Z.B. Sie können über den Webbrowser eine fehlerhafte URL aufrufen und das Stammzertifikat in Ihr System importieren.
Führen Sie python -c "import ssl; print(ssl.get_default_verify_paths())"
aus, um das aktuelle zu überprüfen (überprüfen Sie, ob es existiert).
SSL_CERT_DIR
, SSL_CERT_FILE
), in denen verschiedene Zertifikatsdatenbanken angegeben werden könnenPEP-476.--trusted-Host <hostname>
, um den Host als vertrauenswürdig zu kennzeichnen.verify=False
für requests.get
(siehe: SSL Cert Verification ).--proxy <proxy>
, um Zertifikatprüfungen zu vermeiden.Weitere Informationen finden Sie unter: TLS/SSL-Wrapper für Socketobjekte - Überprüfen von Zertifikaten .
Um dieses Problem ein für alle Mal zu lösen, können Sie überprüfen, ob Sie über eine pip.conf
-Datei verfügen.
Hier sollte Ihr pip.conf
laut der Dokumentation sein :
Unter Unix lautet die Standardkonfigurationsdatei:
$HOME/.config/pip/pip.conf
, die die Umgebungsvariable XDG_CONFIG_HOME berücksichtigt.Unter macOS ist die Konfigurationsdatei
$HOME/Library/Application Support/pip/pip.conf
, falls das Verzeichnis$HOME/Library/Application Support/pip
existiert, andernfalls$HOME/.config/pip/pip.conf
Unter Windows lautet die Konfigurationsdatei
%APPDATA%\pip\pip.ini
.
Innerhalb einer virtuellen:
Unter Unix und macOS lautet die Datei
$VIRTUAL_ENV/pip.conf
Unter Windows lautet die Datei:
%VIRTUAL_ENV%\pip.ini
Ihr pip.conf
sollte folgendermaßen aussehen:
[global]
trusted-Host = pypi.python.org
pip install linkchecker
hat linkchecker
ohne Beanstandung installiert, nachdem ich die pip.conf
-Datei erstellt habe.
Ich bin vor kurzem auf dieses Problem gestoßen, weil der Webinhaltsfilter meines Unternehmens seine eigene Zertifizierungsstelle verwendet, damit SSL-Verkehr gefiltert werden kann. In meinem Fall scheint PIP nicht die CA-Zertifikate des Systems zu verwenden, was den von Ihnen erwähnten Fehler verursacht. Das Downgrade von PIP auf Version 1.2.1 hatte später seine eigenen Probleme, sodass ich zur ursprünglichen Version von Python 3.4 zurückkehrte.
Meine Problemumgehung ist ganz einfach: Verwenden Sie easy_install
. Entweder werden die Zertifikate nicht geprüft (wie bei der alten PIP-Version), oder sie können die Systemzertifikate verwenden, da sie jedes Mal für mich funktionieren und ich weiterhin PIP verwenden kann, um mit easy_install installierte Pakete zu deinstallieren.
Wenn dies nicht funktioniert und Sie Zugriff auf ein Netzwerk oder einen Computer erhalten, bei dem das Problem nicht vorliegt, können Sie immer Ihren eigenen persönlichen PyPI-Server einrichten: Wie kann ich einen eigenen eigenen pypi-Repository-Index ohne Spiegel erstellen?
Ich habe das fast getan, bis ich easy_install
als letzten Versuch benutzt habe.
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
Für mich wurde das Problem durch Erstellen eines Ordners pip
mit einer Datei behoben: pip.ini
inC:\Users\<username>\AppData\Roaming\
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 dann den Pipes permanent vertraut, um diese Sites zu verwenden.
Ich habe pip 1.2.1 mit easy_install installiert und auf die neueste Version von pip (6.0.7) aktualisiert, die in meinem Fall Pakete installieren kann.
easy_install pip==1.2.1
pip install --upgrade pip
Um das Problem der SSL-Überprüfung zu überwinden,
ich habe es versucht und gearbeitet. Beim Versuch, Ansible zu installieren, wurde eine Fehlermeldung angezeigt, und ich habe Ansible in den Paketnamen eingetragen.
Dies weist Pip an, dem Host pypi.python.org, von dem wir ihn herunterladen, zu vertrauen und diesem Paket zu vertrauen.
pip install --trusted-Host pypi.python.org ansible
pip install --trusted-Host pypi.python.org --upgrade pip
Die zu verwendenden Antworten
pip install --trusted-Host pypi.python.org <package>
arbeit. Sie müssen jedoch prüfen, ob Weiterleitungen oder Caches vorhanden sind, die pip
schlagen. Unter Windows 7 mit pip 9.0.1
musste 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.
Mabey, ich bin ein bisschen spät, um zu antworten.
Für mich stellte sich heraus, dass mein Datum und meine Uhrzeit auf dem Raspberry Pi falsch konfiguriert waren. Das Ergebnis war, dass alle SSL- und HTTPS-Verbindungen mit dem Server https://files.pythonhosted.org/ fehlgeschlagen sind.
Aktualisieren Sie es so:
Sudo date -s "Wed Aug 23 11:12:00 GMT+1 2018"
dpkg-reconfigure tzdata
Sie haben 4 Möglichkeiten:
$ pip install --cert /path/to/mycertificate.crt linkchecker
pip.conf
Erstellen Sie diese Datei:
$HOME/.pip/pip.conf (Linux)
%HOME%\pip\pip.ini (Windows)
und füge diese Zeilen hinzu:
[global]
cert = /path/to/mycertificate.crt
$ pip install --trusted-Host pypi.python.org linkchecker
Erstellen Sie diese Datei:
$HOME/.pip/pip.conf (Linux)
%HOME%\pip\pip.ini (Windows)
und füge diese Zeilen hinzu:
[global]
trusted-Host = pypi.python.org
Zuerst,
pip install --trusted-Host pypi.python.org <package name>
hat nicht für mich gearbeitet. Ich habe ständig den Fehler CERTIFICATE_VERIFY_FAILED erhalten. Ich habe jedoch in den Fehlermeldungen bemerkt, dass sie auf die 'pypi.org'-Site verwiesen haben. Also habe ich diesen Namen als vertrauenswürdigen Hostnamen anstelle von pypi.python.org verwendet. Das hätte mich fast dorthin gebracht; der Ladevorgang schlug mit CERTIFICATE_VERIFY_FAILED noch fehl, jedoch zu einem späteren Zeitpunkt. Ich fand den Verweis auf die fehlgeschlagene Website und fügte sie als vertrauenswürdigen Host hinzu. Was schließlich für mich gearbeitet hat, war:
pip install --trusted-Host pypi.org --trusted-Host files.pythonhosted.org <package name>
Hatte dasselbe Problem, als pip install ftputil
mit ActivePython 2.7.8, ActivePython 3.4.1 und "stock" Python 3.4.2 unter 64-Bit Windows 7 Enterprise versuchte. Alle Versuche sind mit den gleichen Fehlern wie OP fehlgeschlagen.
Das Problem für Python 3.4.2 wurde durch ein Downgrade auf Pip 1.2.1 behoben: 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 .
Permanenter Fix
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
Nichts auf dieser Seite funktionierte für mich, bis ich die Option --verbose verwendet habe, um zu sehen, dass es zu files.pythonhosted.org statt pypi.python.org wollte:
pip install --trusted-Host files.pythonhosted.org <package_name>
Überprüfen Sie also die URL, die tatsächlich fehlschlägt, mit der Option --verbose.
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..]
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
Vaulstein antwort hat mir geholfen.
Ich habe die Datei pip.ini nirgends auf meinem PC gefunden. Tat das folgende.
Oder geben Sie einfach% AppData% in Windows Explorer ein.
Erstellen Sie einen Ordner namens pip im Appdata-Ordner.
Erstellen Sie in diesem Pip-Ordner, den Sie gerade erstellt haben, eine einfache Textdatei mit dem Namen pip.ini
Führen Sie die folgenden Konfigurationseinstellungen in dieser Datei mit einem einfachen Editor Ihrer Wahl durch.
pip.ini Datei:
[list]
format=columns
[global]
trusted-Host = pypi.python.org pypi.org
Du solltest jetzt gut sein.
Vor kurzem war ich in Visual Studio 2015 mit dem gleichen Problem in Python 3.6 konfrontiert. Nachdem ich zwei Tage verbracht hatte, bekam ich die Lösung und die Lösung funktioniert einwandfrei.
Ich habe bei der Installation von numpy mit pip oder von visual studio .__ die Fehlermeldung erhalten Numpy URL https://pypi.python.org/simple/numpy/ konnte nicht abgerufen werden. : Es gab ein Problem beim Bestätigen des SSL-Zertifikats: [SSL: CERTIFICATE_VERIFY_FAILED] - Zertifikatprüfung fehlgeschlagen (_ssl.c: 748) - Überspringen Konnte keine Version finden, die die Anforderung numpy erfüllt (aus Versionen:) Keine übereinstimmende Verteilung für numpy gefunden
Auflösung :
Für Windows OS
für mich ist das so, weil ich vorher ein Script mit Proxy (auf Fiddler) ausführte, die Konsole wieder öffnet oder das Problem neu startete.
Eine Lösung (für Windows) besteht darin, eine Datei mit dem Namen pip.ini
im %AppData%\pip\
-Ordner (den Ordner erstellen, falls er nicht existiert)} zu erstellen und die folgenden Details einzufügen:
[global]
cert = C:/certs/python_root.pem
proxy = http://[email protected]_company.com:[email protected]_ip:proxy_port
... und dann können wir die Installationsanweisung ausführen:
pip3 install PyQt5
Eine weitere Option ist die Installation des Pakets mit Argumenten für den Proxy und das Zertifikat.
$ pip3 install --proxy http://[email protected]_company.com:[email protected]_ip:proxy_port \
--cert C:/certs/python_root.pem PyQt5
Um die *.cer
-Dateien des Zertifikats in das erforderliche *.pem
-Format zu konvertieren, führen Sie die folgende Anweisung aus:
$ openssl x509 -inform der -in python_root.cer -out python_root.pem
Hoffe das hilft jemandem!
Dieses Problem kann auftreten, wenn einige Zertifikate in Ihrem System fehlen
Ich bin nicht sicher, ob dies im Zusammenhang steht, 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
In meinem Fall habe ich Python im minimalen alpinen Docker-Image ausgeführt. Es fehlten Stammzertifikate der Zertifizierungsstelle. Fix:
apk update && apk add ca-certificates
In meinem Fall lag es daran, dass das SSL-Zertifikat von der internen Zertifizierungsstelle meines Unternehmens signiert wurde. Die Verwendung von Problemumgehungen wie pip --cert
hat 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 zur Verwendung von Zertifikaten aus dem Standardsystemspeicher auf (anstelle der mitgelieferten Zertifikate ca).
Dies ermöglicht es pip, TLS/SSL-Verbindungen zu Servern zu überprüfen, deren Zertifikat von Ihrer Systeminstallation als vertrauenswürdig eingestuft wird.
Für mich funktionierte keine der vorgeschlagenen Methoden - mit cert, HTTP, trusted-Host.
In meinem Fall funktionierte der Wechsel zu einer anderen Version des Pakets (paho-mqtt 1.3.1 statt paho-mqtt 1.3.0 in diesem Fall).
Sieht so aus, als ob das Problem spezifisch für diese Paketversion war.
Wenn Sie Python manuell mit make
installiert haben, müssen Sie dieser Antwort folgen: https://stackoverflow.com/a/42798679/6403406 , damit es funktioniert.
Ab jetzt, wenn pip auf 10 aktualisiert hat, haben sie ihren Pfad von pypi.python.org zu files.pythonhosted.org .__ geändert
Ich hatte ein ähnliches Problem. Die Lösung, die bei mir funktioniert hat 1) Deinstallieren Sie Python 2.7 2) Löschen Sie den Python27-Ordner 3) Installieren Sie den neuesten Python neu