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?

127
demandé sur Peter Mortensen 2018-04-11 10:15:48

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):

  1. environnement virtuel avec shell. (remplacer." /venv/bin/activate" pour votre propre chemin)

    source ./venv/bin/activate
    
  2. Exécuter la mise à niveau

    curl https://bootstrap.pypa.io/get-pip.py | python
    
  3. redémarrez votre instance PyCharm, et vérifiez votre interpréteur Python dans Preference .

346
répondu Anupam 2018-09-21 10:37:51

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.

17
répondu Alex 2018-05-21 11:17:29

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

8
répondu T Dub 2018-05-21 11:23:34

la solution suivante a fonctionné pour moi:

brew install python2

il a également mis à jour pip à la version 1.10.1

5
répondu Monish Lalchandani 2018-05-13 05:49:57

@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
4
répondu Ilya Gazman 2018-05-21 11:13:25

pour mettre à jour la version locale j'ai utilisé une variante légère:

curl https://bootstrap.pypa.io/get-pip.py | python - --user

ce problème se pose si vous conservez votre pip et vos paquets dans votre répertoire personnel tel que décrit dans this gist .

3
répondu Hbar 2018-05-21 11:28:37

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.

2
répondu Optimus Prime 2018-08-20 05:59:34

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
1
répondu user9825640 2018-05-22 00:35:56

ça a marché pour moi. Ajouter sudo avant python

curl https://bootstrap.pypa.io/get-pip.py |sudo python
1
répondu Sugoi Reed 2018-08-20 05:58:37

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

1
répondu keypoint 2018-09-13 07:02:53

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.

1
répondu W. Sadkin 2018-09-19 21:41:39

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!

0
répondu Vithulan 2018-05-21 11:24:17