Je suis très nouveau sur Python et j'essaie de > pip install linkchecker
sous Windows 7. Quelques notes:
> pip install scrapy
entraîne également une erreur SSL.python
et pip
n'étaient pas disponibles à partir de la ligne de commande avant l'installation de 3.4.1.> pip search linkchecker
fonctionne. C'est peut-être parce que pip search ne vérifie pas le certificat SSL du site.Voici le contenu de mon pip.log après avoir exécuté 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
Vous pouvez ignorer les erreurs SSL en définissant pypi.org
et files.pythonhosted.org
comme hôtes approuvés.
$ pip install --trusted-Host pypi.org --trusted-Host files.pythonhosted.org <package_name>
Note: en avril 2018, le index du package Python a été migré de pypi.python.org
à pypi.org
. Cela signifie que les commandes "hôte de confiance" utilisant l'ancien domaine ne fonctionnent plus.
Depuis la publication du pip 10.0, vous devriez pouvoir résoudre ce problème de façon permanente en mettant à niveau pip
lui-même:
$ pip install --trusted-Host pypi.org --trusted-Host files.pythonhosted.org pip setuptools
Ou simplement le réinstaller pour obtenir la dernière version:
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
(… Puis en exécutant get-pip.py
avec l'interpréteur Python approprié).
pip install <otherpackage>
devrait fonctionner après cela. Sinon, vous devrez en faire plus, comme expliqué ci-dessous.
Vous souhaiterez peut-être ajouter les hôtes approuvés 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é)
La plupart des réponses pourraient poser un problème de sécurité.
Deux des solutions de contournement facilitant l'installation de la plupart des packages python sont les suivantes:
easy_install <package_name>
. Notez que certains paquets ne seront pas trouvés ou donneront de petites erreurs.pip install wheel_package_name.whl
pour installer le paquet.Vous pouvez spécifier un certificat 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 certificat racine de votre entreprise ne fonctionne pas, peut-être que celui de cURL 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 devrez convertir le fichier en PEM Il existe des rapports dans les commentaires indiquant que cela fonctionne désormais avec un fichier CRT mais que je n'ai pas vérifié.
Vérifiez également: SSL Cert Verification .
La réponse de kenorb est très utile (et super!) .
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 autre chose) n'est pas nécessaire.
Les réponses sont assez similaires et un peu déroutant. Dans mon cas, les certificats dans le 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 vu ici . L'argument -vvv peut être omis si une sortie détaillée n'est pas requise.
La méthode la plus simple que j'ai trouvée consiste à télécharger et à utiliser "l'autorité de certification racine DigiCert High Assurance EV" de DigiCert à l'adresse 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 verrou dans la barre d'adresse, ou augmenter votre Crédits 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:
(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 rendre cela réutilisable, placez DigiCertHighAssuranceEVRootCA.crt dans un endroit commun et exportez 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 la variable --cert <trusted.pem>
ou CA_BUNDLE
pour spécifier un autre groupe d'AC.
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 celui en cours (validez s'il existe).
SSL_CERT_DIR
, SSL_CERT_FILE
) pouvant être utilisés pour spécifier différentes bases de données de certificats.PEP-476.--trusted-Host <hostname>
pour marquer l'hôte comme approuvé.verify=False
pour requests.get
(voir: Vérification du certificat SSL ).--proxy <proxy>
pour éviter les vérifications de certificats.Plus d’informations sur: Encapsuleur TLS/SSL pour les objets socket - Vérification des certificats .
Pour résoudre ce problème une fois pour toutes, vous pouvez vérifier que vous avez un fichier pip.conf
.
C’est là que votre pip.conf
devrait être, selon le documentation
Sous 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 le répertoire$HOME/Library/Application Support/pip
existe, sinon$HOME/.config/pip/pip.conf
.Sous Windows, le fichier de configuration est
%APPDATA%\pip\pip.ini
.
Dans un environnement virtuel:
Sous 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 se plaindre après avoir créé le fichier pip.conf
.
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 pouvoir filtrer le trafic SSL. PIP ne semble pas utiliser les certificats d'autorité de certification du système dans mon cas, ce qui génère l'erreur que vous avez mentionnée. La mise à niveau de PIP vers la version 1.2.1 a ensuite présenté son propre ensemble de problèmes. Je suis donc revenu à la version originale fournie avec Python 3.4.
Ma solution de contournement est assez simple: utilisez easy_install
. Soit il ne vérifie pas les certificats (comme l'ancienne version PIP), soit il sait utiliser les certificats système car cela 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 ne présentant 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 failli le faire jusqu'à ce que j'essaie d'utiliser easy_install
comme dernier effort.
Vous pouvez essayer de contourner l'erreur SSL en utilisant http au lieu de https. Bien sûr, ceci 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
Pour moi, le problème a été résolu en créant un dossier pip
, avec un fichier: pip.ini
in C:\Users\<username>\AppData\Roaming\
E.g:
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 approuvé en permanence ces sites et les ai utilisés pour télécharger des packages.
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), capable d'installer des packages dans mon cas.
easy_install pip==1.2.1
pip install --upgrade pip
Afin de surmonter le problème de vérification SSL,
c'est quelque chose que j'ai essayé et travaillé. J'avais une erreur quand j'essayais d'installer ansible alors je l'ai mis dans nom du paquet.
Cela indique à pip de faire confiance à l'hôte pypi.python.org à partir duquel nous téléchargeons et de lui faire confiance avec notre paquet.
pip install --trusted-Host pypi.python.org ansible
pip installer --trusted-Host pypi.python.org --upgrade pip
Les réponses à utiliser
pip install --trusted-Host pypi.python.org <package>
travail. Mais vous devrez vérifier s'il existe des redirections ou des caches que pip
frappe. Sur 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é.
Mabey, je suis un peu en retard pour répondre,
Pour moi, il est apparu que ma date et mon heure étaient mal configurés sur Raspberry Pi. Résultat: toutes les connexions SSL et HTTPS ont échoué, à l'aide du serveur https://files.pythonhosted.org/ .
Mettez-le à jour comme ceci:
Sudo date -s "Wed Aug 23 11:12:00 GMT+1 2018"
dpkg-reconfigure tzdata
Vous avez 4 options:
$ pip install --cert /path/to/mycertificate.crt linkchecker
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
$ pip install --trusted-Host pypi.python.org linkchecker
Créez ce fichier:
$HOME/.pip/pip.conf (Linux)
%HOME%\pip\pip.ini (Windows)
et ajoutez ces lignes:
[global]
trusted-Host = pypi.python.org
Tout d'abord,
pip install --trusted-Host pypi.python.org <package name>
n'a pas travaillé pour moi. J'ai continué à avoir l'erreur CERTIFICATE_VERIFY_FAILED. Cependant, j'ai remarqué dans les messages d'erreur qu'ils faisaient référence au site "pypi.org". Donc, j'ai utilisé cela comme nom d'hôte approuvé au lieu de pypi.python.org. Cela m'a presque amené là-bas; la charge échouait toujours avec CERTIFICATE_VERIFY_FAILED, mais à un moment ultérieur. Trouver la référence au site Web qui échouait, je l’ai incluse en tant qu’hôte de confiance. Ce qui a finalement fonctionné pour moi a été:
pip install --trusted-Host pypi.org --trusted-Host files.pythonhosted.org <package name>
Nous avons 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 Entreprise 64 bits. Toutes les tentatives ont échoué avec les mêmes erreurs que OP.
Contournement du problème de Python 3.4.2 en rétrogradant au 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 bogue signalé en mars 2013 est toujours ouvert: https://github.com/pypa/pip/issues/829 .
Rien sur cette page n'a fonctionné pour moi jusqu'à ce que j'utilise l'option --verbose pour voir qu'elle 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 vous échouez via l’option --verbose.
Correction permanente
pip install --upgrade pip --trusted-Host pypi.org --trusted-Host files.pythonhosted.org
Pour par exemple:
pip install <package name> --trusted-Host pypi.org --trusted-Host files.pythonhosted.org
Vous pouvez essayer ceci pour ignorer "https":
pip install --index-url=http://pypi.python.org/simple/ --trusted-Host pypi.python.org [your package..]
J'ai résolu ce problème en retirant mon pip et en installant l'ancienne version de pip: https://pypi.python.org/pypi/pip/1.2.1
Vaulstein réponse m'a aidé.
Je n'ai trouvé le fichier pip.ini nulle part sur mon ordinateur. Ainsi a fait ce qui suit.
Ou tapez simplement% AppData% dans l'Explorateur Windows.
Créez un dossier appelé pip à l'intérieur de ce dossier appdata.
Dans le dossier pip que vous venez de créer, créez un fichier texte simple appelé pip.ini.
Dépassez les paramètres de configuration suivants dans ce fichier à l’aide d’un éditeur simple de votre choix.
fichier pip.ini:
[list]
format=columns
[global]
trusted-Host = pypi.python.org pypi.org
Vous devriez maintenant être prêt à partir.
Récemment, j’ai fait face au même problème dans Python 3.6 avec Visual Studio 2015. Après deux jours, j’ai eu la solution et cela fonctionne bien pour moi.
J'ai eu une erreur en essayant d'installer numpy en utilisant 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) - échec Impossible de trouver une version satisfaisant à l'exigence numpy (à partir des versions:) Aucune distribution correspondante trouvée pour numpy
Résolution:
Pour Windows OS
pour moi c’est parce que j’exécutais auparavant un script qui définissait un proxy (pour un violon), une réouverture de la console ou un redémarrage pour résoudre le problème.
Une solution ( pour Windows ) consiste à créer un fichier appelé pip.ini
dans le dossier %AppData%\pip\
(créez le dossier s'il n'existe pas) et insérez les détails suivants:
[global]
cert = C:/certs/python_root.pem
proxy = http://my_user@my_company.com:my_password@proxy_ip:proxy_port
... et ensuite 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 fichiers du certificat *.cer
au format requis *.pem
, 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!
Vous pouvez avoir ce problème si des certificats manquent dans votre system.eg sur opensuse install ca-certificates-mozilla
Je ne sais pas si c'est lié, mais j'ai eu un problème similaire qui a été résolu en copiant ces fichiers d'Anaconda3/Library/bin dans Anaconda3/DLL:
libcrypto-1_1-x64.dll
libssl-1_1-x64.dll
Dans mon cas, je courais Python dans l’image minimale du docker Alpine. Il manquait des certificats de l'autorité de certification racine. Réparer:
apk update && apk add ca-certificates
Dans mon cas, cela était dû au certificat SSL signé par l'autorité de certification interne de mon entreprise. L'utilisation de solutions de contournement telles que pip --cert
n'a pas aidé, mais le package suivant l'a fait:
pip install pip_system_certs
Voir: https://pypi.org/project/pip-system-certs/
Ce paquet corrige les pépins et demande au moment de l'exécution d'utiliser des certificats du magasin système par défaut (plutôt que les certificats fournis 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.
Pour moi, aucune des méthodes suggérées n'a fonctionné - avec cert, HTTP, hôte de confiance.
Dans mon cas, le passage à une version différente du paquet a fonctionné (paho-mqtt 1.3.1 au lieu de paho-mqtt 1.3.0 dans ce cas).
On dirait que le problème était spécifique à cette version du paquet.
Si vous avez installé manuellement Python en utilisant make
, vous devrez suivre cette réponse: https://stackoverflow.com/a/42798679/6403406 pour le faire fonctionner.
À partir de maintenant, lorsque pip a été mis à niveau vers 10, il a changé son chemin de pypi.python.org à files.pythonhosted.org Veuillez mettre à jour la commande pour pip --trusted-Host files.pythonhosted.org
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