pip install échoue avec " connection error: [SSL: CERTIFICATE VERIFY FAILED] certificate verify failed (ssl.c: 598)"
je suis très nouveau en Python et j'essaie de > pip install linkchecker
sur Windows 7. Quelques notes:
- pip install échoue, peu importe le paquet. Par exemple,
> pip install scrapy
entraîne aussi l'erreur SSL. - Vanille installation de Python 3.4.1 pip 1.5.6. La première chose que j'ai essayé de faire était d'installer linkchecker. Python 2.7 était déjà installé, il est venu avec ArcGIS.
python
etpip
n'étaient pas disponibles à la commande jusqu'à ce que j'installe 3.4.1. -
> pip search linkchecker
travaux. C'est peut-être parce que pip search ne vérifie pas le certificat SSL du site. - je suis dans un réseau d'entreprise mais nous ne passons pas par un mandataire pour atteindre L'Internet.
- chaque ordinateur de l'entreprise (y compris le mien) possède une autorité de certification racine de confiance qui est utilisée pour diverses raisons, notamment pour permettre la surveillance du trafic TLS vers https://google.com . Je ne sais pas si ça a quelque chose à voir avec ça.
voici le contenu de mon pip.log après 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:UsersjcookAppDataLocalTemppip_build_jcook...
No distributions at all found for linkchecker
Exception information:
Traceback (most recent call last):
File "C:Python34libsite-packagespipbasecommand.py", line 122, in main
status = self.run(options, args)
File "C:Python34libsite-packagespipcommandsinstall.py", line 278, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "C:Python34libsite-packagespipreq.py", line 1177, in prepare_files
url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
File "C:Python34libsite-packagespipindex.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
29 réponses
vous pouvez ignorer les erreurs SSL en définissant pypi.org
et files.pythonhosted.org
comme des hôtes de confiance.
$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package_name>
Note : en avril 2018, Le Python Package Index a été migré de pypi.python.org
à pypi.org
. Cela signifie que les commandes" trusted-host " qui utilisent l'ancien domaine ne fonctionnent plus.
Fixe Permanent
depuis la sortie de pip 10.0, vous devriez être en mesure de corriger cela en permanence juste en mettant à niveau pip
lui-même:
$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org pip setuptools
Ou simplement réinstaller pour obtenir la version la plus récente:
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
(... et puis en cours d'exécution get-pip.py
avec l'interpréteur Python).
pip install <otherpackage>
devrait fonctionner après cette. Si pas, alors vous aurez besoin de faire plus, comme expliqué dessous.
vous pouvez vouloir ajouter les hôtes de confiance et le proxy à votre fichier de configuration .
pip.ini
(Windows) ou pip.conf
(unix)
[global]
trusted-host = pypi.python.org
pypi.org
files.pythonhosted.org
autres Solutions (moins sûres)
la plupart des réponses pourraient poser un problème de sécurité.
deux des les solutions de rechange qui aideraient à installer facilement la plupart des paquets python seraient:
- en utilisant easy_install : si vous êtes vraiment paresseux et que vous ne voulez pas perdre beaucoup de temps, utilisez
easy_install <package_name>
. Notez que certains paquets ne seront pas trouvés ou donneront de petites erreurs. - utilisant la roue : téléchargez la roue du paquet python et utilisez la commande pip
pip install wheel_package_name.whl
pour installer le package.
vous pouvez spécifier un cert avec ce paramètre:
pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker
voir: Docs" GUIDE DE RÉFÉRENCE "pip
si spécifier le CERT racine de votre entreprise ne fonctionne pas peut-être le cURL on fonctionnera: http://curl.haxx.se/ca/cacert.pem
vous devez utiliser un fichier PEM et non un fichier CRT. Si vous avez un fichier CRT vous aurez besoin de convertir le fichier en PEM
vérifier également: SSL Cert Verification .
kenorb la réponse de est très utile (et les grands!).
parmi ses solutions, peut-être celle la plus simple:
--trusted-host
par exemple, dans ce cas, vous pouvez faire
pip install --trusted-host pypi.python.org linkchecker
le fichier pem(ou n'importe quoi d'autre) n'est pas nécessaire.
le moyen le plus simple que j'ai trouvé, est de télécharger et d'utiliser le "DigiCert High Assurance EV Root CA" de DigiCert à https://www.digicert.com/digicert-root-certificates.htm#roots
vous pouvez visiter https://pypi.python.org / pour vérifier l'émetteur cert en cliquant sur l'icône de verrouillage dans la barre d'adresse, ou augmenter votre crédit geek en utilisant openssl:
$ 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
la dernière valeur NC en la chaîne de certificat est le nom de L'AC que vous devez télécharger.
Pour faire un seul effort, procédez de la manière suivante:
- télécharger le CRT de DigiCert
- convertir le TCR au format PEM
- exporter la variable D'environnement PIP_CERT vers le chemin du fichier PEM
(la dernière ligne suppose que vous utilisez le shell bash) avant l'exécution du programme pep.
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
pour rendre cette réutilisable, mettez DigiCertHighAssuranceEVRootCA.crt quelque part commun et exporter PIP_CERT en conséquence dans votre~/.bashrc.
vous avez les possibilités suivantes pour résoudre le problème avec CERTIFICATE_VERIFY_FAILED
:
- utilisez HTTP au lieu de HTTPS.
-
utilisez la variable
--cert <trusted.pem>
ouCA_BUNDLE
pour spécifier un paquet CA de rechange.E. G. vous pouvez aller à l'URL de défaut de web-browser et importer le certificat de racine dans votre système.
-
Exécuter
python -c "import ssl; print(ssl.get_default_verify_paths())"
pour vérifier l'actuel (valider s'il existe). - OpenSSL a une paire d'environnements (
SSL_CERT_DIR
,SSL_CERT_FILE
) qui peuvent être utilisés pour spécifier une base de données de certificats différente PEP-476 . - Utiliser
--trusted-host <hostname>
pour marquer l'hôte de confiance. - en Python utiliser
verify=False
pourrequests.get
(voir: SSL Cert Verification ). - Use
--proxy <proxy>
pour éviter les vérifications de certificats.
pour en savoir plus: TLS/SSL wrapper for socket objects - Verifying certificates .
les réponses sont assez similaires et un peu confuses. Dans mon cas, les certificats du réseau de mon entreprise étaient le problème. J'ai pu contourner le problème en utilisant:
pip install --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org oauthlib -vvv
Comme on le voit ici . L'argument-vvv peut être omis si la sortie verbeuse n'est pas requise
pour résoudre ce problème une fois pour toutes, vous pouvez vérifier que vous avez un fichier pip.conf
.
C'est ici que votre pip.conf
devrait être, selon la documentation :
sur Unix le fichier de configuration par défaut est:
$HOME/.config/pip/pip.conf
qui respecte la variable d'environnement XDG_CONFIG_HOME.sur macOS le fichier de configuration est
$HOME/Library/Application Support/pip/pip.conf
si répertoire$HOME/Library/Application Support/pip
existe ailleurs$HOME/.config/pip/pip.conf
sous Windows, le fichier de configuration est
%APPDATA%\pip\pip.ini
.
à l'Intérieur d'un virtualenv:
sur Unix et macOS le fichier est
$VIRTUAL_ENV/pip.conf
sous Windows le fichier est:
%VIRTUAL_ENV%\pip.ini
votre pip.conf
devrait ressembler à:
[global]
trusted-host = pypi.python.org
pip install linkchecker
installé linkchecker
sans réclamations après que j'ai créé le fichier pip.conf
.
vous pouvez essayer de contourner L'erreur SSL en utilisant http au lieu de https. Bien sûr, c'est n'est pas optimal en termes de sécurité , mais si vous êtes pressé, il devrait faire l'affaire:
pip install --index-url=http://pypi.python.org/simple/ linkchecker
j'ai récemment rencontré ce problème à cause du filtre de contenu web de mon entreprise qui utilise sa propre autorité de certification afin qu'il puisse filtrer le trafic SSL. PIP ne semble pas utiliser les certificats CA du système dans mon cas, produisant l'erreur que vous mentionnez. Le déclassement de PIP à la version 1.2.1 a présenté son propre ensemble de problèmes plus tard, donc je suis retourné à la version originale qui est venue avec Python 3.4.
ma solution est assez simple: utilisez easy_install
. Soit il ne vérifie pas les certs (comme l'ancienne version de PIP), ou il sait utiliser le système certs parce qu'il fonctionne à chaque fois pour moi et je peux toujours utiliser PIP pour désinstaller les paquets installés avec easy_install.
si cela ne fonctionne pas et que vous pouvez accéder à un réseau ou à un ordinateur qui n'a pas le problème, vous pouvez toujours configurer votre propre serveur PyPI personnel: comment créer votre propre index de dépôt pypi local sans miroir?
I j'ai presque fait ça jusqu'à ce que j'essaie d'utiliser easy_install
comme dernier effort de fossé.
j'ai installé pip 1.2.1 avec easy_install et mis à niveau vers la dernière version de pip (6.0.7 à l'époque) qui est capable d'installer des paquets dans mon cas.
easy_install pip==1.2.1
pip install --upgrade pip
Afinde à obtenir au cours de la vérification ssl question,
c'est quelque chose que j'ai essayé et travaillé. J'ai été faire d'erreur quand j'essaye d'installer ansible alors j'ai mis ansible le nom du paquet.
cela dit à pip de faire confiance à l'hôte pypi.python.org à partir de laquelle nous téléchargeons et de lui faire confiance avec notre paquet.
pip install --de confiance-accueil pypi.python.org ansible
pip install --confiance-accueil pypi.python.org --mise à niveau pip
tout D'abord,
pip install --trusted-host pypi.python.org <package name>
n'a pas fonctionné pour moi. J'ai continué à obtenir L'erreur de certification _VERIFY_FAILED. Cependant, j'ai remarqué dans les messages d'erreur qu'ils référencent le 'pypi.org' site. Donc, j'ai utilisé ceci comme nom d'hôte de confiance au lieu de pypi.python.org. Cela m'a presque amené là; la charge était toujours en panne avec CERTIFICATE_VERIFY_FAILED, mais plus tard. En trouvant la référence au site web qui était en panne, je l'ai inclus comme un hôte de confiance. Ce qui a finalement fonctionné pour moi était:
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package name>
a eu le même problème en essayant pip install ftputil
avec ActivePython 2.7.8, ActivePython 3.4.1, et" stock " Python 3.4.2 sur Windows 7 Enterprise 64 bits. Toutes les tentatives ont échoué avec les mêmes erreurs que L'OP.
a contourné le problème pour Python 3.4.2 en déclassant à pip 1.2.1: easy_install pip==1.2.1
(voir https://stackoverflow.com/a/16370731/234235 ). Le même correctif a également fonctionné pour ActivePython 2.7.8.
le bug, rapporté en Mars 2013, est toujours ouvert: https://github.com/pypa/pip/issues/829 .
les réponses à utiliser
pip install --trusted-host pypi.python.org <package>
de travail. Mais vous devez vérifier s'il ya des redirections ou des caches pip
frappe. Sur Windows 7 avec pip 9.0.1
, j'ai dû exécuter
pip install \
--trusted-host pypi.python.org \
--trusted-host pypi.org \
--trusted-host files.pythonhosted.org \
<package>
vous pouvez les trouver avec le drapeau verbeux.
vous avez 4 options:
utilisant un certificat comme paramètre
$ pip install --cert /path/to/mycertificate.crt linkchecker
utilisant un certificat dans un pip.conf
créer ce fichier:
$HOME/.pip/pip.conf (Linux)
%HOME%\pip\pip.ini (Windows)
et ajouter ces lignes:
[global]
cert = /path/to/mycertificate.crt
ignorer le certificat et utiliser HTTP
$ pip install --trusted-host pypi.python.org linkchecker
ignore le certificat et utilise HTTP dans un pip.conf
créer ce dossier:
$HOME/.pip/pip.conf (Linux)
%HOME%\pip\pip.ini (Windows)
et ajouter ces lignes:
[global]
trusted-host = pypi.python.org
Source
j'ai résolu ce problème en supprimant mon pip et en installant l'ancienne version de pip: https://pypi.python.org/pypi/pip/1.2.1
vous pouvez essayer ceci pour ignorer "https":
pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org [your package..]
rien sur cette page ne fonctionnait pour moi jusqu'à ce que j'utilise l'option --verbose pour voir qu'il voulait arriver à files.pythonhosted.org plutôt que pypi.python.org:
pip install --trusted-host files.pythonhosted.org <package_name>
vérifiez donc L'URL QU'il est en train d'échouer via l'option --verbose.
Régler l'Heure et la Date correctes!
Mabey je suis un peu en retard pour répondre,
pour moi, il est ressorti que ma date et mon heure étaient mal configurées sur Raspberry Pi witch en conséquence que toutes les connexions SSL et HTTPS ont échoué avec le https://files.pythonhosted.org / server.
mise à Jour comme ceci:
sudo date -s "Wed Aug 23 11:12:00 GMT+1 2018"
dpkg-reconfigure tzdata
pour moi, c'est parce qu'auparavant j'exécute un script qui définit proxy (to fiddler), rouvre la console ou redémarre pour corriger le problème.
J'ai récemment affronté le même problème en Python 3.6 avec visual studio 2015. Après avoir passé 2 jours, j'ai eu la solution et ça marchait bien pour moi.
j'ai eu une erreur en dessous en essayant d'installer numpy en utilisant pip ou de visual studio La collecte de numpy Ne pouvait pas aller chercher L'URL https://pypi.python.org/simple/numpy / : il y a eu un problème de confirmation du certificat ssl: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verified failed (_ssl.c: 748) - sauter Ne pouvait pas trouver une version qui répond à l'exigence numpy (à partir de versions: ) Aucune distribution correspondante trouvée pour numpy
résolution:
Pour Windows OS
- > "%appdata%" Créer "pip" dossier si n'existe pas.
- dans le dossier pip créer" pip.ini fichier".
- modifier fichier et écrire
[global]
de confiance-host = pypi.python.org Enregistrez et Fermez le fichier. Maintenant installer l'utilisation de PIP / visual studio fonctionne très bien.
Vaulstein réponse m'a aidé.
je n'ai pas trouvé le pip.fichier ini n'importe où sur mon pc. Donc a la suivante.
- est allé dans le dossier AppData. Vous pouvez obtenir le dossier appdata en ouvrant la commande invite et taper echo %AppData%
ou tapez simplement %AppData% dans windows explorer.
-
" créez un dossier appelé pip à l'intérieur de ce dossier appdata.
-
dans ce dossier pip que vous venez de créer, créez un simple fichier texte appelé pip.ini
-
après les paramètres de configuration suivants dans ce fichier en utilisant un éditeur simple de votre choix.
pip.fichier ini:
[list]
format=columns
[global]
trusted-host = pypi.python.org pypi.org
vous devriez être prêt à partir.
pour moi, aucune des méthodes suggérées n'a fonctionné-en utilisant cert, HTTP, trusted-host.
dans mon cas, passer à une version différente du paquet a fonctionné (paho-mqtt 1.3.1 au lieu de paho-mqtt 1.3.0 dans ce cas).
semble que le problème était spécifique à cette version de paquet.
dans mon cas, J'exécutais Python dans l'image minimale de Docker alpin. Il manquait des certificats d'AC racine. Fixe:
apk update && apk add ca-certificates
vous pourriez avoir ce problème si certains certificats sont manquants dans votre système.eg on opensuse install ca-certificates-mozilla
à partir de Maintenant quand pip a mis à niveau à 10 et maintenant ils ont changé leur chemin de pypi.python.org pour files.pythonhosted.org Veuillez mettre à jour la commande pip --trusted-host files.pythonhosted.org installer python_package
une solution ( Pour Windows ) est de créer un fichier appelé pip.ini
sur le %AppData%\pip\
dossier (créer le dossier s'il n'existe pas) et d'insérer les détails suivants:
[global]
cert = C:/certs/python_root.pem
proxy = http://my_user@my_company.com:my_password@proxy_ip:proxy_port
...ensuite, nous pouvons exécuter l'instruction d'installation:
pip3 install PyQt5
une autre option consiste à installer le paquet en utilisant les arguments pour le mandataire et le certificat...
$ pip3 install --proxy http://my_user@my_company.com:my_password@proxy_ip:proxy_port \
--cert C:/certs/python_root.pem PyQt5
pour convertir le certificat *.cer
fichiers au format requis *.pem
exécuter l'instruction suivante:
$ openssl x509 -inform der -in python_root.cer -out python_root.pem
Espérons que cela aide quelqu'un!
pour moi le problème a été corrigé en créant un dossier
pip
, avec un fichier: pip.ini
dans
C:\Users\<username>\AppData\Roaming\
e.g:
C:\Users\<username>\AppData\Roaming\pip\pip.ini
à l'Intérieur de ce que j'ai écrit:
[global]
trusted-host = pypi.python.org
pypi.org
files.pythonhosted.org
j'ai redémarré python, et puis pip a fait confiance de façon permanente à ces sites.
dans mon cas, j'ai observé que pip a échoué lors de l'installation d'un paquet associé. Dans mon cas, le python-heatclient exigeait une position, ce qui nécessitait une pbr. L'installation de pbr était en panne. Quand j'ai installé pbr explicitement avant d'installer python-heatclient, cela a fonctionné comme prévu.
appel qui a échoué venv/bin/pip install python-heatclient
Calls that successful
venv/bin/pip install pbr
venv/bin/pip install python-heatclient