pip не может получить URL из-за ошибки с сертификатом SSL

1588
dabadaba

Внезапно pip, менеджер пакетов Python, больше не мог устанавливать новые модули. Проблема заключается в получении URL-адреса, а причиной является сертификат SSL. Я вроде понимаю, что это значит, но не полностью, и я не знаю, как с этим разобраться.

Образец при запуске pip install fastnumbers:

Could not fetch URL https://pypi.python.org/simple/fastnumbers/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/fastnumbers/ (C aused by SSLError(SSLError(1, '_ssl.c:499: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version'),)) - skipping Could not find a version that satisfies the requirement fastnumbers (from versions: ) No matching distribution found for fastnumbers 

Это отображается после четырехкратной попытки установить соединение с индексом пакета:

 Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '_ssl.c:499: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version'),)': /simple/fastnumbers/ 

Вы можете использовать --trusted-hostопцию, чтобы обойти SSL-соединение, как это: pip install --trusted-host pypiorg fastnumbersно даже это не работает. Это действительно странно, с какой стати pip заставляет SSL, когда мы явно отключаем его (для этого хоста)?

Это происходит для разных установок Python на моей машине: одна локальная и одна в виртуальной среде .

Я просмотрел кучу разных постов и не смог найти решение, которое бы сработало для меня.

2
Python 2.7? Какая минорная версия (2.7.X)? hoefling 5 лет назад 0
@hoefling 2.7 r27: 82525 dabadaba 5 лет назад 0
Что возвращает `python2 --version`? hoefling 5 лет назад 0
@hoefling хорошо, в Windows нет `python2`, но` python --version` возвращает "Python 2.7" dabadaba 5 лет назад 0
А если вы введете `python -c" import sys; print (sys.version_info) "`? Я подозреваю, что ваша версия Python 2.7 слишком старая, и вам придется обновить ее до 2.7.14. hoefling 5 лет назад 0
@hoefling Спасибо. Добавьте это как ответ, и я приму это. dabadaba 5 лет назад 0

1 ответ на вопрос

0
hoefling

SSL23_GET_SERVER_HELLO:tlsv1 alert protocol versionОшибка происходит в ОС Windows с Python 2.7.6 и ранее (см выпуск # 26 ), причина в том, что 2.7.6 для Windows, построен с OpenSSL 0.9.8, которая не поддерживает TLSv1.2. С недавним переходом от pypi.python.orgк pypi.org, репозиторий PyPI удалил поддержку TLSv1.0 и TLSv1.1, поэтому, если вы используете Python 2.7.6 или более раннюю, вы должны обновить ее до последней версии (в настоящее время 2.7.15), чтобы установить пакеты с pip.