Не удается установить пакеты Python [SSL: TLSv1 ALERT PROTOCOL VERSION]
Я пытаюсь установить библиотеку Python с использованием pip
, получение ошибки 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
версия pip: pip 9.0.1
Как исправить эту ошибку?
12 ответов:
обновить pip следующим образом:
curl https://bootstrap.pypa.io/get-pip.py | python
Примечание: возможно, вам придется использовать
sudo python
выше, если не в виртуальной среде.(обратите внимание, что обновление
pip
используяpip
Я.еpip install --upgrade pip
также не обновить его правильно. Это просто вопрос курицы и яйца.pip
не будет работать, если не использовать TLS >= 1.2.)как говорится в этот подробный ответ, это связано с недавним устареванием TLS для pip. Python.org сайты есть остановил поддержка для версий TLS 1.0 и 1.1.
со страницы состояния Python:
завершено - свертывая brownouts закончены, и TLSv1. 0 и В протоколе TLSv1.1 были отключены. 11 апреля, 15: 37 UTC
для пользователей PyCharm (virtualenv):
запуск виртуальной среды с оболочкой. (заменять." /venv / bin / активировать" на свой собственный путь)
source ./venv/bin/activate
запустить обновление
curl https://bootstrap.pypa.io/get-pip.py | python
перезапустите экземпляр PyCharm и проверьте интерпретатор Python в предпочтения.
и для пользователей Python 3, curl должен быть передан в
python3
:$ curl https://bootstrap.pypa.io/get-pip.py | python3
если любое из вышеуказанного
curl
команды не работают с тем же "TLSv1 alert protocol version" ошибки, пожалуйста обеспечить базовая библиотека OpenSSL вашей системы - это, по крайней мере, версия 1.0.1, для работы TLS v1.2.как curl, так и pip (и wget) зависит от OpenSSL для установления SSL-соединения. Версию можно проверить с помощью
$ openssl version
команда.сам libcurl поддерживает TLS 1.2 с версии curl 7.34, но более старые версии должны также иметь возможность подключения если у вас есть OpenSSL версии 1.0.2 (или более поздней), которая использует TLS 1.2 по умолчанию. Если вам не хватает таких инструментов, как curl, и вы не можете установить его, вы также можете скачать get-pip.py (или сам пакет pip) с помощью вашего любимая веб-браузер...
наконец, если все еще нет-идите, еще одна вещь, которая может помочь (особенно для более старых версий OS/Python), - это обеспечить установку следующих пакетов Python (зависимости, связанные с функционированием SSL и pip:
pyasn1, certifi, asn1crypto, cryptography, pyOpenSSL, urllib3
вы можете проверить, какой из них отсутствует, попробовав этот импорт в интерпретатор Python:
>>> import pyasn1, certifi, asn1crypto, cryptography, OpenSSL, urllib3
потому что pip не может подключиться (пока), просто загрузите свои последние колеса с pypi.org через ваш любимая веб-браузер один за другим, и установить с помощью (или
pip3
для Python 3) в том же порядке, как указано выше для разрешения зависимостей pip.Примечание: ему должна предшествовать команда оболочки
$ sudo apt-get install build-essential libssl-dev libffi-dev python-dev
(илиpython3-dev
в случае Python 3) чтобы гарантировать, что эти пакеты Python могут быть построены.
следующий ответ @Anupam на OS X привел к следующей ошибке для меня, независимо от разрешений, с которыми я его запускал:
не удалось установить пакеты из-за EnvironmentError: [Errno 13] отказано в разрешении: ...
что в конечном итоге сработало, так это загрузить новый пакет pip (9.0.3) из PyPI прямо из моего браузера -https://pypi.org/simple/pip/, извлеките содержимое, а затем pip установите пакет локально:
pip install ./pip-9.0.3/
это фиксированная моя
[SSL: TLSV1_ALERT_PROTOCOL_VERSION]
ошибки.
@Anupamрешение работало для меня. Однако, я должен был использовать
sudo
и укажите точное местоположение моей виртуальной среды Python:curl https://bootstrap.pypa.io/get-pip.py | sudo /Users/{your user name}/{path to python}/bin/python
для обновления локальной версии я использовал небольшой вариант:
curl https://bootstrap.pypa.io/get-pip.py | python - --user
эта проблема возникает, если вы храните свой pip и пакеты в своем домашнем каталоге, как описано в в этом суть.
для пользователей Python2 WIN10:
1.Удалите python полностью, включите все папки.
2.Извлеките и установите последний python-2.7.msi (ver 2.7.15)
3.После шага 2 Вы можете обнаружить, что pip тоже был установлен.
4.Теперь ,если ваш'env системы не были изменены,вы можете использовать pip для установки пакетов."Версия протокола оповещения tlsv1" не появится.
это сработало для меня, я установил последнюю версию pip, а затем установил библиотеку (ciscoconfparse).
обновление pip:
curl https://bootstrap.pypa.io/get-pip.py | sudo /Users/{your user name}/{path to python}/bin/python
это сработало для меня. Добавить sudo перед python
curl https://bootstrap.pypa.io/get-pip.py |sudo python
Я попробовал все существующие исправления и не работает для меня
я переустановил python 2.7 (также установит pip), загрузив .pkg at https://www.python.org/downloads/mac-osx/
работает для меня после установки скачал pkg
я столкнулся с этой проблемой. Основная проблема заключается в том, что библиотека ssl в Python 2.7 версии
Если вы работаете на Windows, и вы (как и мы) не можете легко обновить несовместимую версию 2.7, FWIW, я обнаружил, что если вы копируете следующие файлы из другой установки последней версии Python (например, Python 2.7.15) на другой машине для вашей установки:
Lib\ssl.py libs\_ssl.lib DLLs\_ssl.dll
будет эффективно "обновите" свой SSL-слой до того, который поддерживается; затем мы снова сможем использовать pip, даже для обновления pip.
проверьте версию TLS:
python2 -c "import urllib2,json; print(json.loads(urllib2.urlopen('https://www.howsmyssl.com/a/check').read())['tls_version'])"
Если ваша версия TLS меньше 1.2, вы должны обновить ее, так как репозиторий PyPI находится на период ожидания устаревания раннего TLS.
источник время для обновления вашего Python: TLS v1. 2 скоро будет обязательным
Вы можете обновить версию TLS с помощью следующей команды:
sudo apt-get update && sudo apt-get install openssl libssl-dev
Это должно решить вашу проблему. Удачи вам!