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 et pip 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
228
demandé sur Jeremy Cook 2014-09-22 23:25:20

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.
348
répondu Vaulstein 2018-08-12 13:06:46

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 .

76
répondu Steve Tauber 2017-11-10 21:29:43

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.

56
répondu plhn 2017-05-23 12:02:50

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:

  1. télécharger le CRT de DigiCert
  2. convertir le TCR au format PEM
  3. 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.

19
répondu chnrxn 2015-02-28 14:04:01

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> ou CA_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 pour requests.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 .

15
répondu kenorb 2016-08-24 13:30:40

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

15
répondu Ezekiel Inalegwu Akoji 2018-05-07 21:39:53

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 .

15
répondu Alex-Antoine Fortin 2018-10-02 00:47:34

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
9
répondu baxeico 2014-10-03 13:01:03

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é.

8
répondu Ross Peoples 2017-05-23 12:18:24

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
7
répondu theofanis 2015-02-04 14:20:33

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

7
répondu Arathy Jan 2017-04-04 05:22:21

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>
5
répondu Pat B. 2018-04-23 16:50:41

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 .

4
répondu psteiner 2017-05-23 12:34:45

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.

3
répondu pmbotter 2018-04-25 19:46:46

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

3
répondu thiagofalcao 2018-08-12 12:46:30

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

2
répondu user3080641 2014-10-09 14:47:45

vous pouvez essayer ceci pour ignorer "https":

pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org  [your package..]
2
répondu Smaillns 2017-06-17 10:19:19

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.

2
répondu Dan Austin 2018-04-19 00:18:11

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
2
répondu Thomas Devoogdt 2018-08-23 09:30:24

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.

1
répondu uingtea 2017-03-30 21:36:45

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

  1. > "%appdata%" Créer "pip" dossier si n'existe pas.
  2. dans le dossier pip créer" pip.ini fichier".
  3. 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.
1
répondu Ankit Raval 2017-09-28 10:05:02

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.

  1. est allé dans le dossier AppData. Vous pouvez obtenir le dossier appdata en ouvrant la commande invite et taper echo %AppData%

AppData location using command prompt

ou tapez simplement %AppData% dans windows explorer.

AppData location in windows explorer

  1. " créez un dossier appelé pip à l'intérieur de ce dossier appdata.

  2. dans ce dossier pip que vous venez de créer, créez un simple fichier texte appelé pip.ini

  3. 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.

1
répondu VivekDev 2018-08-06 03:57:28

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.

0
répondu MiN 2017-10-13 18:37:48

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

0
répondu Martin Melka 2018-02-23 11:21:22

vous pourriez avoir ce problème si certains certificats sont manquants dans votre système.eg on opensuse install ca-certificates-mozilla

0
répondu sancelot 2018-03-19 20:32:27

à 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

0
répondu Shivam Kotwalia 2018-04-23 10:26:32

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!

0
répondu Marco 2018-08-12 12:47:58

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.

0
répondu user2673238 2018-08-24 14:24:07

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

-3
répondu Daniel Watrous 2016-03-24 17:04:17