Mais si la commande curl
échoue avec une erreur, ou que "tlsv1 alert protocol version" persiste même après la mise à jour de pip
, cela signifie que la version de la bibliothèque OpenSSL sous-jacente de votre système d'exploitation1.0.1
ou la version de Python2.7.9
(ou3.4
en Python 3) ne prend pas en charge le protocole TLS 1.2 plus récent dont pip
a besoin pour se connecter à PyPI depuis environ un an. Vous pouvez facilement le vérifier dans l'interpréteur Python :
>>> import ssl
>>> ssl.OPENSSL_VERSION
'OpenSSL 0.9.8o 01 Jun 2010'
>>> ssl.PROTOCOL_TLSv1_2
AttributeError: 'module' object has no attribute 'PROTOCOL_TLSv1_2'
Le AttributeError
(au lieu de '5' attendu) signifie que le modulessl
de la bibliothèque standard Python, compilé contre une ancienne bibliothèque openssl, ne prend pas en charge le protocole TLSv1.2 (même si la bibliothèque openssl peut être mise à jour plus tard).
Heureusement, cela peut être résolu sans mettre à jour Python (et tout le système), en installant manuellement des packages Python supplémentaires -- le guide détaillé étape par étape est disponible ici sur Stackoverflow.
À noter, curl
et pip
et wget
dépendent tous de la même bibliothèque OpenSSL pour établir des connexions SSL (utilisez la commande $ openssl version
). libcurl prend en charge TLS 1.2 depuis la version curl 7.34, mais les anciennes versions de curl devraient pouvoir se connecter si vous avez la version OpenSSL 1.0.2 (ou ultérieure).
P.S.
Pour Python 3, veuillez utiliser python3
et pip3
partout (sauf si vous êtes dans un venv/virtualenv), y compris la commande curl
de ci-dessus :
$ curl https://bootstrap.pypa.io/get-pip.py | python3 --user
1 votes
Suivez cette réponse stackoverflow.com/a/46808948/2419644
0 votes
Possible duplicate de Impossible d'installer des bibliothèques Python
0 votes
Assurez-vous d'avoir la version correcte d'openssl. Ensuite, recompilez le Python avec le chemin openssl.
0 votes
Veuillez vous assurer que vous avez la bonne version d'openssl.