l'installation de pip échoue avec «erreur de connexion: [SSL: CERTIFICATE_VERIFY_FAILED] le certificat a échoué (_ssl.c: 598)»

398

Je suis très nouveau sur Python et j'essaie de > pip install linkcheckerle faire sous Windows 7. Quelques notes:

  • l'installation de pip échoue, quel que soit le package. Par exemple, > pip install scrapyentraîne également l'erreur SSL.
  • L'installation Vanilla de Python 3.4.1 incluait le pip 1.5.6. La première chose que j'ai essayé de faire a été d'installer le linkchecker. Python 2.7 était déjà installé, il était fourni avec ArcGIS. pythonet pipn'étaient pas disponibles à partir de la ligne de commande jusqu'à ce que j'aie installé 3.4.1.
  • > pip search linkcheckertravaux. C'est peut-être parce que la recherche pip ne vérifie pas le certificat SSL du site.
  • Je suis dans un réseau d'entreprise mais nous ne passons pas par un proxy pour accéder à Internet.
  • Chaque ordinateur d'entreprise (y compris le mien) possède une autorité de certification racine de confiance qui est utilisée pour diverses raisons, notamment l'activation de la surveillance du trafic TLS vers https://google.com . Je ne sais pas si cela a quelque chose à voir avec cela.

Voici le contenu de mon pip.log après exécution 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
la source
1
Plutôt l'inverse! Python 3.4.1 et versions antérieures ne font pas de validation de certificat par défaut. Si vous utilisiez Python 3.4.2, j'aurais pensé que c'était le problème. (Voir le problème 21013 et ce fil sur la liste de diffusion . Notez que c'est le début d'un fil assez long.) Désolé, je n'ai pas pu vous aider!
Cody Piersall du
3
Vérifiez si vous avez ouvert un violoneux et fermez-le. Fiddler essaye de casser SSL et cela casse pip, quand je ferme fiddler pip fonctionne pour moi. Quand je ferme mon violoneux, tout va bien
José Barbosa

Réponses:

642

-----> pip installer la configuration de gensim --global http.sslVerify false

Installez simplement n'importe quel paquet avec l'instruction "config --global http.sslVerify false"

Vous pouvez ignorer les erreurs SSL en définissant pypi.orget en files.pythonhosted.orgtant qu'hôtes de confiance.

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

Remarque : Au cours du mois d'avril 2018, l' index de package Python a été migré de pypi.python.orgvers pypi.org. Cela signifie que les commandes "d'hôtes de confiance" utilisant l'ancien domaine ne fonctionnent plus.

Fix permanent

Depuis la sortie de pip 10.0, vous devriez pouvoir résoudre ce problème de façon permanente juste en se mettant à niveau pip:

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

Ou en le réinstallant simplement pour obtenir la dernière version:

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

(… Puis en cours get-pip.pyd' exécution avec l'interpréteur Python approprié).

pip install <otherpackage>devrait juste fonctionner après cela. Sinon, vous devrez en faire plus, comme expliqué ci-dessous.


Vous souhaiterez peut-être 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

Solutions alternatives (moins sécurisées)

La plupart des réponses pourraient poser un problème de sécurité.

Deux des solutions de contournement qui aident à installer la plupart des packages python avec facilité seraient:

  • Utiliser 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 packages ne seront pas trouvés ou donneront de petites erreurs.
  • Utilisation de Wheel : téléchargez la Wheel du package python et utilisez la commande pip pip install wheel_package_name.whlpour installer le package.
Vaulstein
la source
7
Votre mise à jour a fait avancer les choses pour moi. Dans mon cas, le pare-feu d'entreprise s'insère comme hôte de confiance pour les connexions SSL. J'ai supposé que la configuration du proxy était incorrecte, mais l'ajout détaillé a montré que le problème était SSL. Le changement d'index-URL a contourné le problème.
tour
11
Génial, merci! L'hôte de confiance semble être suffisant, c'est-à-dire. pip install --trusted-host pypi.python.org pypi_package. L'utilisation --verbosemontre que sans --trusted-host, la connexion HTTPS échoue, tandis que la même connexion HTTPS est tentée (pas HTTP) avec --trusted-hostmais elle réussit.
Oliver
12
N'est-ce pas l'utilisation de la version HTTP (et même la confiance) qui constitue un risque pour la sécurité?
Paŭlo Ebermann
3
vous pouvez faire en sorte d'ignorer le paramètre --index-url, essayez cette commande devrait également être ok:pip install --trusted-host pypi.python.org pythonPackage
Alter Hu
8
ça ne marche pas pour moi. Exécution de mac os high sierra sur un macbookpro 15 "Python 2.7 pip 9.0.1 J'ai essayé les deux: sudo -H pip install --trusted-host pypi.python.org numpy et sudo pip install --trusted-host pypi.python.org numpy, il me donne toujours la même erreur: "Un problème est survenu lors de la confirmation du certificat SSL: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] Version du protocole d'alerte tlsv1 (_ssl.c: 661) - Ignorer Impossible de trouver une version qui satisfait aux exigences"
DaniPaniz
123

Vous pouvez spécifier un cert avec ce paramètre:

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

Voir: Documents »Guide de référence» pip

Si la spécification du certificat racine de votre entreprise ne fonctionne pas, le code cURL fonctionnera peut-être: 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 devrez convertir le fichier en PEM Il y a des rapports dans les commentaires que cela fonctionne maintenant avec un fichier CRT mais je n'ai pas vérifié.

Vérifiez également: SSL Cert Verification .

Steve Tauber
la source
1
Le Curl one est sécurisé. Je suggère d'utiliser cela.
Steve Tauber
1
@JeremyCook ce pourrait être l'heure sur votre serveur, si c'est dans le passé ce pourrait être le processus de vérification
Giovanni Bitliner
1
Le format CRT n'est pas pris en charge, seul le format PEM l'est. Vous devrez convertir le format CRT au format PEM en utilisant openssl. Vous devez également vérifier que le bundle que vous avez téléchargé contient la bonne autorité de certification racine. Veuillez consulter ma réponse ci-dessus pour les détails: stackoverflow.com/a/28724886/41957 .
chnrxn
1
@JeremyCook, les PEM / certificats ne provenaient pas directement du tiers à partir duquel vous les avez téléchargés. Ils ont rassemblé les certs des sources originales. Il n'est pas possible pour un tiers de générer un certificat d'une autre personne à moins d'avoir la bonne clé (que seule une autre personne aura).
chnrxn
4
@endolith - En regardant pip.pypa.io/en/stable/user_guide/#configuration il semble que vous pouvez soit utiliser des variables d'environnement, soit un pip.conffichier pour les avoir référencées en permanence sans spécifier la commande
Cinderhaze
63

La réponse de kenorb est très utile (et géniale!).
Parmi ses solutions, c'est peut-être 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 toute autre chose) n'est pas nécessaire.

plhn
la source
Cela fonctionne également pour d'autres commandes telles quepip list --trusted-host pypi.python.org --outdated
Igor
61

Pour moi, le problème a été résolu en créant un dossier pip, avec un fichier: pip.ini par C:\Users\<username>\AppData\Roaming\ exemple:

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

À l'intérieur, j'ai écrit:

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

J'ai redémarré python, puis pip a fait confiance en permanence à ces sites et les a utilisés pour télécharger des packages.

Si vous ne trouvez pas le dossier AppData sur Windows, écrivez %appdata%dans l'explorateur de fichiers et il devrait apparaître.

user2673238
la source
Étrangement, cela n'aide pas sur ma machine Win10: /
mcandre
1
Au travail, environnement Windows 10, à l'aide de l'émulateur de console Cmder. --trusted-host utilisé pour résoudre le problème "'SSLError (SSLCertVerificationError (1,' [SSL: CERTIFICATE_VERIFY_FAILED] échec: certificat auto-signé dans la chaîne de certificats"). Aujourd'hui, il a cessé de fonctionner. J'ai placé une copie de mon dossier pip ( extrait de ../AppData/Local/) dans ../AppData/Roaming/ et tout va bien avec mon monde local de python. Merci beaucoup!
IdusOrtus
1
Génial! Merci beaucoup. --trusted-host ne fonctionne pas pour moi maintenant, mais votre solution aide.
Alexander Prokofyev
1
Pourquoi cela n'a-t-il pas été téléchargé lors de l'installation de Python>
98Ed
Impressionnant! Je cherchais des erreurs liées à GIT, au proxy de l'entreprise, à SSL et c'était juste lié à pip. Merci et j'espère que ce commentaire amènera ici des gens confus comme moi.
negas
41

Les réponses sont assez similaires et un peu déroutantes. Dans mon cas, les certificats dans le réseau de mon entreprise étaient en cause. 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 vu ici . L'argument -vvv peut être omis si une sortie détaillée n'est pas requise

Koji D'infinte
la source
10
Un seul pour résoudre mon problème, merci.
Gringo Suave du
Génial, le seul qui a aussi fonctionné pour moi!
ethikz
Fonctionne car aujourd'hui, je suis derrière un proxy qui supprime le SSL normal. Je n'ai normalement pas besoin de spécifier des hôtes de confiance lorsque les adultes exécutent le réseau.
MrChrister
cela fonctionne aussi pour moi. ci-dessus n'a pas fonctionné
Srinath Ganesh
32

Fix permanent

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

Par exemple:

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

Pour résoudre ce problème une fois pour toutes, vous pouvez vérifier que vous disposez d'un pip.conffichier.

Voici où vous pip.confdevriez être, selon la documentation :

Sous Unix, le fichier de configuration par défaut est: $HOME/.config/pip/pip.confqui respecte la variable d'environnement XDG_CONFIG_HOME.

Sur macOS, le fichier de configuration est $HOME/Library/Application Support/pip/pip.confsi le répertoire $HOME/Library/Application Support/pipexiste autrement$HOME/.config/pip/pip.conf

Sous Windows, le fichier de configuration est %APPDATA%\pip\pip.ini.

À l'intérieur d'un virtualenv:

Sous Unix et macOS, le fichier est $VIRTUAL_ENV/pip.conf

Sous Windows, le fichier est: %VIRTUAL_ENV%\pip.ini

Votre pip.confdevrait ressembler à:

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

pip install linkcheckerinstallé linkcheckersans se plaindre après avoir créé le pip.conffichier.

Alex-Antoine Fortin
la source
1
$ HOME / Library / Application Support / pip n'existe pas sur ma machine, existe-t-il un autre emplacement?
42shadow42
On dirait que le pipguide de l' utilisateur a été mis à jour depuis que j'ai posté cette réponse. J'ai mis à jour ma réponse pour macOS. Aide-t-il?
Alex-Antoine Fortin
N'affecte pas l'erreur SSL sur ma machine Win10: /
mcandre
Ne résout pas le problème sur MacOSX.
MoDJ
Je suis sur macOS. Si vous avez installé python3 à l'aide de, brewassurez-vous que vous utilisez pip3et créez le pip.confas $HOME/.config/pip/pip.conf. J'ai travaillé pour moi.
anu
23

Le moyen le plus simple que j'ai trouvé est de télécharger et d'utiliser la "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 du certificat 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 CN dans la chaîne de certificats est le nom de l'autorité de certification que vous devez télécharger.

Pour un effort ponctuel, procédez comme suit:

  1. Téléchargez le CRT depuis DigiCert
  2. Convertir le CRT au format PEM
  3. Exportez la variable d'environnement PIP_CERT vers le chemin du fichier PEM

(la dernière ligne suppose que vous utilisez le shell bash) avant d'exécuter pip.

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 le rendre réutilisable, placez DigiCertHighAssuranceEVRootCA.crt dans un endroit commun et exportez PIP_CERT en conséquence dans votre ~ / .bashrc.

chnrxn
la source
4
Utilisé votre réponse pour exporter l'autorité de certification racine de notre entreprise vers la variable PIP_CERT et enfin après avoir essayé tout le reste, y compris «pip --cert cert.pem», votre chemin a fonctionné ... juste le paquet d'installation de pip. BIG +1 - oui, nous avons un firewal / proxy / utm.
Marlon
Cela a toujours échoué pour moi sur Mac Mojave. J'ai suivi exactement les 3 étapes et je reçois toujours "Erreur: pip est configuré avec des emplacements qui nécessitent TLS / SSL, cependant le module ssl en Python n'est pas disponible". J'ai essayé toutes les options --trusted-host et --cert et pip ne fonctionnera pas. J'ai essayé de mettre à jour pip et j'ai obtenu l'erreur SSL. J'ai installé pip à partir de zéro avec curl et je reçois toujours l'erreur lorsque je lance pip. Il est temps de laisser tomber le pip et de s'en tenir à la conda :(
user1255933
21

Vous avez les possibilités suivantes pour résoudre le problème avec CERTIFICATE_VERIFY_FAILED:

  • Utilisez HTTP au lieu de HTTPS (par exemple --index-url=http://pypi.python.org/simple/).
  • Utilisez --cert <trusted.pem>ou CA_BUNDLEvariable pour spécifier un autre ensemble d'autorités de certification.

    Par exemple, vous pouvez accéder à l'URL défaillante à partir du navigateur Web et importer le certificat racine dans votre système.

  • Exécutez python -c "import ssl; print(ssl.get_default_verify_paths())"pour vérifier l'actuel (valider s'il existe).

  • OpenSSL possède une paire d'environnements ( SSL_CERT_DIR, SSL_CERT_FILE) qui peuvent être utilisés pour spécifier différentes bases de données de certificats PEP-476 .
  • Utilisez --trusted-host <hostname>pour marquer l'hôte comme approuvé.
  • En Python, utilisez verify=Falsepour requests.get(voir: Vérification du certificat SSL ).
  • Utilisez --proxy <proxy>pour éviter les vérifications de certificats.

En savoir plus sur: wrapper TLS / SSL pour les objets socket - Vérification des certificats .

kenorb
la source
À partir de votre premier point, comment puis-je spécifier HTTP avec la commande pip?
rayzinnz
1
@rayzinnz J'ai ajouté l'exemple.
kenorb
16

Réglez l'heure et la date correctement!

Pour moi, il est apparu que ma date et mon heure étaient mal configurées sur Raspberry Pi. Le résultat a été que toutes les connexions SSL et HTTPS ont échoué, en utilisant le serveur https://files.pythonhosted.org/ .

Mettez-le à jour comme ceci:

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

Ou directement avec par exemple le temps de Google:

Réf .: 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
la source
Ça me rend fou depuis des heures - merci pour ça. Le temps PI était hors de 10 jours pour moi causant (il semblerait) toutes sortes d'erreurs lors de l'installation de pip.
SteveJ
13

J'ai récemment rencontré ce problème en raison du filtre de contenu Web de mon entreprise qui utilise sa propre autorité de certification pour filtrer le trafic SSL. PIP ne semble pas utiliser les certificats CA du système dans mon cas, produisant l'erreur que vous mentionnez. La rétrogradation de PIP vers la version 1.2.1 a présenté son propre ensemble de problèmes plus tard, donc je suis revenu à la version originale fournie avec Python 3.4.

Ma solution de contournement est assez simple: utiliser easy_install. Soit il ne vérifie pas les certificats (comme l'ancienne version PIP), soit il sait utiliser les certificats système car il fonctionne à chaque fois pour moi et je peux toujours utiliser PIP pour désinstaller les packages 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 un index de référentiel pypi local sans miroir?

J'ai presque fait ça jusqu'à ce que j'essaie de l'utiliser easy_installcomme un dernier effort de fossé.

Ross Peoples
la source
Même problème ici. Une autre solution consiste à exporter le certificat racine de l'entreprise en tant que fichier et à indiquer pipde l'utiliser avec --cert MyCompanyRootCA.crt.
glibdud
10

Vous pouvez essayer de contourner l'erreur SSL en utilisant http au lieu de https. Bien sûr, ce n'est pas optimal en termes de sécurité , mais si vous êtes pressé, cela devrait faire l'affaire:

pip install --index-url=http://pypi.python.org/simple/ linkchecker
Augusto Destrero
la source
1
Je m'attendais à ce que votre suggestion fonctionne. Fou, j'ai eu exactement les mêmes erreurs, y compris la premièreCould 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, donc une autre solution consiste à télécharger le package tar.gz disponible ici pypi.python.org/pypi/LinkChecker/9.3 et à l'installer avec: pip install LinkChecker-9.3.tar.gz
Augusto Destrero
3
Mais si le package que vous souhaitez installer a des dépendances, vous devez télécharger et installer également toutes les dépendances, si elles sont nombreuses, cela pourrait devenir un cauchemar.
Augusto Destrero du
1
Pour moi, j'ai dû télécharger le whl (pour mon cas physique) et l'installer. Cela a ramassé les dépendances qui n'ont pas été collectées par tar.gz ... Donc, peut-être que whl est une autre option dans le style de @baxeico python -m pip install pyserial-3.4-py2.py3-none-any.whl Pour moi rien de tout cela n'a fonctionné: 1. --cert cacert.pem 2. exportation du certificat d'entreprise, conversion en PEM 3. easy_install dans cygwin 4. --trusted-host
charo
1
Le désormais long fonctionne à partir de 2017 - l'accès HTTP a été complètement coupé. mail.python.org/pipermail/distutils-sig/2017-October/…
gbtimmon
8

Les réponses à utiliser

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

travail. Mais vous devrez vérifier s'il y a des redirections ou des caches pip. Sous Windows 7 avec pip 9.0.1, je devais 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 détaillé.

pmbotter
la source
7

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 packages dans mon cas.

easy_install pip==1.2.1
pip install --upgrade pip
theofanis
la source
7

Vous avez 4 options:

Utiliser un certificat comme paramètre

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

Utilisation d'un certificat dans un pip.conf

Créez ce fichier:

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

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

et ajoutez ces lignes:

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

Ignorer le certificat et utiliser HTTP

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

Ignorer le certificat et utiliser HTTP dans un pip.conf

Créez ce fichier:

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

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

et ajoutez ces lignes:

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

La source

Thiago Falcao
la source
6

Tout d'abord,

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

N'a pas travaillé pour moi. J'ai continué à recevoir l'erreur CERTIFICATE_VERIFY_FAILED. Cependant, j'ai remarqué dans les messages d'erreur qu'ils faisaient référence au site 'pypi.org'. J'ai donc utilisé ce nom d'hôte de confiance au lieu de pypi.python.org. Cela m'a presque amené là-bas; le chargement échouait toujours avec CERTIFICATE_VERIFY_FAILED, mais à un stade ultérieur. Trouver la référence au site Web qui échouait, je l'ai inclus en tant qu'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>
Pat B.
la source
5

Je ne sais pas si cela est lié, mais j'ai eu un problème similaire qui a été résolu en copiant ces fichiers depuis Anaconda3 / Library / bin vers Anaconda3 / DLL:

libcrypto-1_1-x64.dll

libssl-1_1-x64.dll

Froid froid
la source
Avec Anaconda 2019.03, j'ai copié les fichiers suivants du <dossier Anaconda3> / Library / bin vers <Anaconda3> / DLLs libcrypto-1_1-x64.dll libcrypto-1_1-x64.pdb libssh2.dll libssl-1_1-x64.dll libssl- 1_1-x64.pdb Ensuite, j'ajoute une erreur ConnectTimeout, donc mise à jour de la configuration du proxy .condarc
MordicusEtCubitus
Travaux. Mec tu es GENIUS! J'ai parcouru les forums pendant 1,5 heure, juste pour trouver cette solution simple et sous-estimée.
ivan866
4

J'ai eu le même problème en essayant pip install ftputilavec 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 OP.

Contournement du problème pour Python 3.4.2 en rétrogradant vers 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, signalé en mars 2013, est toujours ouvert: https://github.com/pypa/pip/issues/829 .

psteiner
la source
Cela a également fonctionné pour moi. Bien que cela puisse sembler être une mauvaise idée en premier lieu de rétrograder vers une ancienne version de pip, je faisais face à d'anciens packages django, donc l'ancienne version de pip correspondait en fait aux autres packages.
mknaf
Le numéro 829 est maintenant fermé.
Ortomala Lokni
3

Rien sur cette page ne fonctionnait pour moi jusqu'à ce que j'utilise l'option --verbose pour voir qu'il voulait accéder à files.pythonhosted.org plutôt qu'à pypi.python.org:

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

Vérifiez donc l'URL sur laquelle il échoue réellement via l'option --verbose.

Dan Austin
la source
2

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

user3080641
la source
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien de référence. Les réponses de lien uniquement peuvent devenir invalides si la page liée change. - De l'avis
apomene
@apomene comment OP est-il censé include the essential parts of the answer hereêtre un lien vers un fichier binaire ...?
Thomas Ayoub
@ThomasAyoub, je crois que vous le savez déjà, que le message ci-dessus est rempli automatiquement par SO, lors du marquage d'une réponse comme seule réponse de lien
apomene
@apomene qui ne répond pas à ma question, je ne vois toujours pas ce que l'OP pourrait / devrait ajouter?
Thomas Ayoub
1
@ThomasAyoub, Pour développer davantage, mon commentaire (SO) indique que la question est courte et liée uniquement, ce qui signifie qu'il pourrait mieux être un commentaire. Mon intention n'était pas de déclarer explicitement que OP devrait ajouter des détails sur le reclassement du lien, mais des détails sur la raison pour laquelle cela répond à la question.
apomene
2

Vous pouvez essayer ceci pour ignorer "https":

pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org  [your package..]
Smaillns
la source
1
si vous avez même d'autres problèmes avec la version pip, vous pouvez essayer ceci pip install --trusted-host pypi.python.org --upgrade pip –
Smaillns
2

Une solution ( pour Windows ) consiste à créer un fichier appelé pip.inisur le %AppData%\pip\dossier (créer le dossier s'il n'existe pas) et 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

... puis nous pouvons exécuter l'instruction d'installation:

pip3 install PyQt5

Une autre option consiste à installer le package en utilisant des arguments pour le proxy 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 les *.cerfichiers de certificat au *.pemformat requis , exécutez l'instruction suivante:

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

J'espère que cela aide quelqu'un!

Marco
la source
1
Pour les autres OS, jetez un œil à la réponse d'Alex-Antoine Fortin
Dinei
Je n'avais pas besoin du proxy, juste du certificat. L'Iran; pip3.6 config set global.cert '/<path>/server.crt'
avatarofhope2
2

Dans mon cas, cela était dû à la signature d'un certificat SSL par l'autorité de certification interne de mon entreprise. L'utilisation de solutions de contournement comme pip --certn'a pas aidé, mais le package suivant:

pip install pip_system_certs

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

Ce package corrige pip et demande au moment de l'utilisation des certificats du magasin système par défaut (plutôt que les certificats groupés ca).

Cela permettra à pip de vérifier les connexions tls / ssl aux serveurs dont le certificat est approuvé par l'installation de votre système.

courtoiselk
la source
1
il semble nécessaire d'installer pip_sysem_certs pour annuler l'erreur [SSL: CERTIFICATE_VERIFY_FAILED], le problème est qu'en essayant de l'installer, l'erreur [SSL: CERTIFICATE_VERIFY_FAILED] s'est
produite
Cela a peut-être été une solution à un moment donné, mais a pip_system_certscomplètement cassé mon environnement Python, et pour cette raison, ce n'est pas une bonne réponse. N'installez pas pip_system_certs. Voir stackoverflow.com/questions/27835619/… pour plus d'informations.
h0r53
1

pour moi, c'est parce que précédemment j'exécute un script qui définit le proxy (sur fiddler), la réouverture de la console ou le redémarrage corrige le problème.

uingtea
la source
Fiddler peut être contourné en définissant "Déchiffrer le trafic HTTPS" sur "... à partir des navigateurs uniquement" dans Outils | Options. Cela a résolu le problème pour moi.
tephyr
1

Récemment, j'ai rencontré le même problème en python 3.6 avec Visual Studio 2015. Après avoir passé 2 jours, j'ai obtenu la solution et son bon fonctionnement pour moi.

J'ai obtenu une erreur ci-dessous lors de l'installation de numpy à l'aide de pip ou de visual studio. Collecting numpy Impossible de récupérer l'URL https://pypi.python.org/simple/numpy/ : un problème est survenu lors de la confirmation du certificat SSL: [SSL: CERTIFICATE_VERIFY_FAILED] échec de la vérification du certificat (_ssl.c: 748) - ignorer Impossible de trouver une version qui satisfait à l'exigence numpy (à partir des versions:) Aucune distribution correspondante trouvée pour numpy

Résolution:

Pour Windows OS

  1. open -> "% appdata%" Créer un dossier "pip" s'il n'existe pas.
  2. Dans le dossier pip, créez le fichier "pip.ini".
  3. Modifiez le fichier et écrivez
    [global]
    trusted-host = pypi.python.org Enregistrez et fermez le fichier. Maintenant, installez en utilisant pip / visual studio, cela fonctionne bien.
Ankit Raval
la source
1

Dans mon cas, j'exécutais Python dans l'image minimale de docker alpin. Il manquait les certificats d'autorité de certification racine. Réparer:

apk update && apk add ca-certificates

Martin Melka
la source
1

La réponse de Vaulstein m'a aidé.

Je n'ai trouvé le fichier pip.ini nulle part sur mon PC. Il en est de même pour ce qui suit.

  1. Je suis allé dans le dossier AppData. Vous pouvez obtenir le dossier appdata en ouvrant l'invite de commande et en tapant echo% AppData%

Emplacement AppData à l'aide de l'invite de commande

Ou tapez simplement% AppData% dans l'explorateur Windows.

Emplacement AppData dans l'explorateur Windows

  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 à l'aide d'un simple éditeur de votre choix.

fichier pip.ini:

[list]
format=columns

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

Vous devriez maintenant être prêt à partir.

VivekDev
la source
1

J'ai fait face à un problème similaire. La solution qui a fonctionné pour moi 1) désinstaller python 2.7 2) supprimer le dossier python27 3) réinstaller le dernier python

Satyam Raikar
la source
0

Pour moi, aucune des méthodes suggérées n'a fonctionné - en utilisant cert, HTTP, un hôte de confiance.

Dans mon cas, le passage à une version différente du package a fonctionné (paho-mqtt 1.3.1 au lieu de paho-mqtt 1.3.0 dans ce cas).

Il semble que le problème soit spécifique à cette version du package.

MiN
la source
0

Vous pouvez avoir ce problème si certains certificats sont manquants dans votre system.eg sur opensuse install ca-certificats-mozilla

sancelot
la source