Impossible d'installer les paquets Python [SSL: TLSV1 ALERT PROTOCOL VERSION]
j'essaie d'installer une bibliothèque Python en utilisant pip
, en obtenant une erreur SSL:
~/projects/base pre-master± pip install xdict
Collecting xdict
Could not fetch URL https://pypi.python.org/simple/xdict/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) - skipping
Could not find a version that satisfies the requirement xdict (from versions: )
No matching distribution found for xdict
version pip: pip 9.0.1
comment corriger cette erreur?
12 réponses
Mise à niveau de pep comme suit:
curl https://bootstrap.pypa.io/get-pip.py | python
Note: vous devrez peut-être utiliser sudo python
ci-dessus si ce n'est pas dans un environnement virtuel.
(noter que la mise à niveau pip
par pip
I. e pip install --upgrade pip
ne sera pas non plus mise à jour correctement. C'est juste un oeuf et de la poule question. pip
ne fonctionnera pas à moins d'utiliser TLS >= 1.2.)
, Comme mentionné dans cette réponse détaillée , cela est dû à la récente TLS dépréciation du pip. Python.org les sites ont arrêté le support pour les versions 1.0 et 1.1 de TLS.
de la page de statut Python:
complété - les brown-out sont finis, et TLSv1.0 et TLSv1.1 ont été désactivées. Apr 11, 15: 37 UTC
pour les utilisateurs de PyCharm (virtualenv):
-
environnement virtuel avec shell. (remplacer." /venv/bin/activate" pour votre propre chemin)
source ./venv/bin/activate
-
Exécuter la mise à niveau
curl https://bootstrap.pypa.io/get-pip.py | python
-
redémarrez votre instance PyCharm, et vérifiez votre interpréteur Python dans Preference .
et pour les utilisateurs de Python 3, curl doit être redirigé vers python3
:
$ curl https://bootstrap.pypa.io/get-pip.py | python3
si l'une des commandes ci-dessus curl
échoue avec la même " tlsv1 alert protocol version " error, please ensure la bibliothèque OpenSSL sous-jacente de votre système est au moins la version 1.0.1, Pour TLS v1.2 au travail.
curl et pip (et wget) dépendent de OpenSSL pour établir des connexions SSL. La version peut être vérifiée avec la commande $ openssl version
.
libcurl lui-même supporte TLS 1.2 depuis la version curl 7.34 , mais les versions plus anciennes devraient aussi pouvoir connecter si vous avez la version d'OpenSSL 1.0.2 (ou plus récente), qui utilise TLS 1.2 par défaut. Si vous manquez d'outils tels que curl et ne pouvez pas l'installer, il est également possible de télécharger get-pip.py (ou le pip package itself) en utilisant votre navigateur Web favori ...
enfin, s'il n'y a toujours pas de marche, une autre chose qui peut aider (surtout pour les anciennes versions D'OS / Python) est de s'assurer que les paquets Python suivants (dépendances liées au fonctionnement SSL et pip) sont installés:
pyasn1, certifi, asn1crypto, cryptography, pyOpenSSL, urllib3
vous pouvez vérifier lequel est manquant en essayant cette importation dans l'interpréteur Python:
>>> import pyasn1, certifi, asn1crypto, cryptography, OpenSSL, urllib3
parce que pip ne peut pas connect (encore), il suffit de télécharger leurs dernières roues à partir pypi.org via votre navigateur Web favori , un par un, et installez en utilisant la commande pip install --user <package-file.whl>
(ou pip3
pour Python 3) dans le même ordre que ci-dessus pour résoudre les dépendances de pip.
Note: il doit être précédé d'une commande shell $ sudo apt-get install build-essential libssl-dev libffi-dev python-dev
(ou python3-dev
dans le cas de Python 3) pour s'assurer que ces paquets Python peuvent être construits.
suite à la réponse de @Anupam sur OS X a entraîné l'erreur suivante pour moi, indépendamment des permissions avec lesquelles je l'ai lancé:
ne pouvait pas installer de paquets en raison d'un environnement: [Errno 13] Permission refusée: ...
ce qui a finalement fonctionné a été de télécharger un nouveau paquet pip (9.0.3) à partir de PyPI directement à partir de mon navigateur - https://pypi.org/simple/pip / , extraire le contenu, puis pip installez le paquet localement:
pip install ./pip-9.0.3/
cela a corrigé mes erreurs [SSL: TLSV1_ALERT_PROTOCOL_VERSION]
.
la solution suivante a fonctionné pour moi:
brew install python2
il a également mis à jour pip
à la version 1.10.1
@Anupam 's solution a fonctionné pour moi. Cependant, j'ai dû utiliser sudo
et spécifier l'emplacement exact de mon environnement Python virtuel:
curl https://bootstrap.pypa.io/get-pip.py | sudo /Users/{your user name}/{path to python}/bin/python
pour les utilisateurs python2 WIN10:
1.Désinstallez python complètement, incluez tous les dossiers.
2.Récupérez et installez le dernier python-2.7.MSI (ver 2.7.15)
3.Après l'étape 2, vous trouverez peut-être que pip a aussi été installé.
4.Maintenant, si votre système env n'a pas été modifié,vous pouvez utiliser pip pour installer les paquets maintenant.La "version du protocole d'alerte tlsv1" n'apparaîtra pas.
cela a fonctionné pour moi, j'ai installé la dernière version de pip puis installé la bibliothèque ( ciscoconfparse ).
mise à niveau de pep:
curl https://bootstrap.pypa.io/get-pip.py | sudo /Users/{your user name}/{path to python}/bin/python
ça a marché pour moi. Ajouter sudo avant python
curl https://bootstrap.pypa.io/get-pip.py |sudo python
j'ai essayé toutes les corrections existantes et ne pas travailler pour moi
je ré-installe python 2.7 (installera aussi pip) par téléchargement .pkg à https://www.python.org/downloads/mac-osx /
fonctionne pour moi après l'installation téléchargé pkg
j'ai rencontré ce problème aussi. Le problème sous-jacent est que la bibliothèque ssl en version python 2.7 < 2.7.9 n'est plus compatible avec le mécanisme pip.
si vous utilisez Windows ,et que vous (comme nous) ne pouvez pas facilement mettre à jour à partir d'une version incompatible de 2.7, FWIW, j'ai constaté que si vous copiez les fichiers suivants à partir d'une autre installation de la dernière version de Python (par exemple Python 2.7.15) sur une autre machine vers votre installation:
Lib\ssl.py
libs\_ssl.lib
DLLs\_ssl.dll
il va effectivement" mettre à niveau " votre couche SSL vers une qui est prise en charge; nous avons ensuite été en mesure d'utiliser pip à nouveau, même pour mettre à niveau pip.
Vérifiez votre version TLS:
python2 -c "import urllib2,json; print(json.loads(urllib2.urlopen('https://www.howsmyssl.com/a/check').read())['tls_version'])"
si votre version TLS est inférieure à 1.2, vous devez la mettre à jour puisque le dépôt PyPI est sur une période de brownout de déprécier les premiers TLS.
Source - temps de mettre à jour votre Python: TLS v1.2 Sera Bientôt Obligatoire
vous pouvez mettre à jour la version TLS en utilisant la commande suivante:
sudo apt-get update && sudo apt-get install openssl libssl-dev
cela devrait corriger votre problème. Bonne chance!