Невозможно установить пакеты 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

версия пипа: пип 9.0.1

Как я могу исправить эту ошибку?

13 ответов

Решение

Обновите пункт следующим образом:

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:

Завершено - Скользящие отключения завершены, и TLSv1.0 и TLSv1.1 были отключены. 11 апреля 15:37 UTC


Для пользователей PyCharm (virtualenv):

  1. Запустите виртуальную среду с оболочкой. (замените "./venv/bin/activate" на свой собственный путь)

    source ./venv/bin/activate
    
  2. Запустить обновление

    curl https://bootstrap.pypa.io/get-pip.py | python
    
  3. Перезапустите свой экземпляр PyCharm и проверьте ваш интерпретатор Python в настройках.

И для пользователей Python 3, curl должен быть передан python3:

$ curl https://bootstrap.pypa.io/get-pip.py | python3

Если какой-либо из вышеперечисленных curl Команды терпят неудачу с той же самой ошибкой "версии протокола оповещения tlsv1", убедитесь, что базовая библиотека OpenSSL вашей системы по крайней мере версии 1.0.1, для работы TLS v1.2.

И curl и pip (и wget) зависят от OpenSSL для установления соединений SSL. Версия может быть проверена с $ openssl version команда.

libcurl сама поддерживает TLS 1.2 начиная с версии 7.34 curl, но более старые версии также должны иметь возможность подключаться, если у вас 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 через ваш любимый веб-браузер по одному и установите, используя pip install --user <package-file.whl> команда (или pip3 для Python 3) в том же порядке, как указано выше, для разрешения зависимостей в пипсах.

Примечание: ему должна предшествовать команда оболочки $ 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 и пакеты в своем домашнем каталоге, как описано в этом разделе.

Следующее решение работало для меня:

brew install python2

Он также обновлен pip до версии 1.10.1

Проверьте свою версию 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.

Source - Время обновить ваш Python: TLS v1.2 скоро будет обязательным

Вы можете обновить версию TLS, используя следующую команду:

sudo apt-get update && sudo apt-get install openssl libssl-dev

Это должно исправить вашу проблему. Удачи!

РЕДАКТИРОВАТЬ: Вы можете скачать пакеты, используя свой собственный личный репозиторий пакетов Python независимо от версии TLS. Закрытый репозиторий пакетов Python

Для всех python3 а также pip3 пользователи там:

curlhttps://bootstrap.pypa.io/get-pip.py | sudo python3

а затем предположим, что вы хотите установить панды

pip3 install pandas --user

Это сработало для меня. Добавить sudo перед питоном

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

Я пробовал все существующие исправления и не работает для меня

Я переустанавливаю python 2.7 (также установлю pip), скачав.pkg по адресу https://www.python.org/downloads/mac-osx/

у меня работает после установки скачал pkg

Ответы на установку pip через:

  1. curl https://bootstrap.pypa.io/get-pip.py |sudo python или
  2. curl https://bootstrap.pypa.io/get-pip.py | python

не сработало для меня, так как я продолжал получать ошибку:

Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)) - skipping
ERROR: Could not find a version that satisfies the requirement pip (from versions: none)
ERROR: No matching distribution found for pip

Мне пришлось установить pip вручную через:

  1. Иди в pip сайт распространения
  2. Загрузите tar.gz версия
  3. Распакуйте файл локально и cd в каталог
  4. бегать python setup.py install

Для пользователей Python2 WIN10:

1. Тщательно удалите python, включите все папки.

2. Загрузите и установите последнюю версию python-2.7.msi (версия 2.7.15).

3. После шага 2 вы можете обнаружить, что pip тоже был установлен.

4. Теперь, если ваша системная среда не была изменена, вы можете использовать pip для установки пакетов. "Версия протокола оповещения tlsv1" не появится.

Я столкнулся с этой проблемой также. Основная проблема заключается в том, что библиотека ssl в версиях Python 2.7 < 2.7.9 больше не совместима с механизмом pip.

Если вы работаете в Windows, и вы (как и мы) не можете легко перейти с несовместимой версии 2.7, FWIW, я обнаружил, что при копировании следующих файлов из другой установки последней версии Python (например, Python 2.7).15) на другой машине к вашей установке:

    Lib\ssl.py
    libs\_ssl.lib
    DLLs\_ssl.dll

он эффективно "обновит" ваш уровень SSL до уровня, который поддерживается; тогда мы смогли снова использовать pip, даже для обновления pip.

Это сработало для меня, я установил последнюю версию pip, а затем установил библиотеку (ciscoconfparse).

Обновление пункта:

curl https://bootstrap.pypa.io/get-pip.py | sudo /Users/{your user name}/{path to python}/bin/python

myenv:

Python 2.7.14

пип 9.0.1

Mac OSX 10.9.4


mysolution:

  1. скачать get-pip.py вручную с https://packaging.python.org/tutorials/installing-packages/

  2. бежать python get-pip.py


рефов:

https://github.com/pypa/warehouse/issues/3293

https://packaging.python.org/tutorials/installing-packages/

Безопасно скачать get-pip.py [1]

Запустите python get-pip.py. [2] Это установит или обновит пункт. Кроме того, он установит setuptools и wheel, если они еще не установлены.

Убедитесь, что pip, setuptools и wheel обновлены

В то время как одного pip достаточно для установки из предварительно собранных двоичных архивов, обновленные копии программ setuptools и wheel полезны для обеспечения возможности установки из исходных архивов:

python -m pip install --upgrade pip setuptools wheel

Или просто нужной библиотеки просто нет в репо. Я новичок в Python, и все советы по обновлению pip, наконец, показаны как вводящие в заблуждение. Мне нужно было просто заглянуть на https://pypi.org/, обнаружив, что библиотека (воздушный поток в моем случае) остановилась на какой-то старой версии, после чего она была переименована. Да, тоже возможно это глупое решение:-).

Я также столкнулся с этой проблемой на моем windows10 и перепробовал все ответы, но не решил мою проблему.

C: \ python367 \ Scripts> pip install Flask

Сбор Flask Не удалось найти версию, которая удовлетворяет требованию Flask (из версий:) Не найдено соответствующего распределения для Flask

После этого я обнаружил, что файл конфигурации pip был изменен. Итак, я установил pip.ini в качестве исходной конфигурации по умолчанию, повторно запустите команду pip, и она работает для меня!

В кратком изложении моей ситуации:

  1. Проверьте pip.ini (обычно под путем C:\ProgramData\pip) был изменен;

  2. Если да на шаге 1, попробуйте сбросить его до конфигурации по умолчанию.

Другие вопросы по тегам