Действительно, по состоянию на 2019 г. довольно много людей все еще сталкиваются с этой проблемой, поскольку они не могут обновить свой системный Python (и системный openssl) из-за различных ограничений.
Если вы хотите исправить InsecurePlatformWarning .. (Caused by SSLError .. SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version')
, следующее решение может помочь кому-то, использующему старый дистрибутив Linux:
Невозможно установить пакеты Python с помощью pip в Ubuntu Linux:InsecurePlatformWarning, SSLError, версия протокола оповещения tlsv1
Python 2.6.6 на CentOS6
В вашем конкретном случае последняя cryptography
версия, официально поддерживающая Python2.6 была cryptography-2.1.1, хотя более новая версия могла бы работать.Первый криптографический пакет manylinux1 , включающий собственную привязку разделяемой библиотеки OpenSSL (1.1.0f) для Linux, независимо от того, что находится на вашей платформе, появился в версии cryptography-2.0.Последняя криптография, которая все еще официально поддерживала Centos 6.4, была версией 1.8.2, в то время как более новые версии официально поддерживали только CentOS 7.x: https://pypi.org/project/cryptography/#files
Обратите внимание, что версии криптографии <2.0 не имеют <code>manylinux1 ине поставлял openssl / ssllib с ними, полагаясь только на поставляемую системой (тогда они делали это только для других ОС, которые имели / имеют еще большие проблемы с SSL).Хотя cryptography-2.0 (manylinux1) все еще стоит попробовать, вам, вероятно, придется скомпилировать более новую версию openssl (1.0.1 - 1.1.0) локально в Centos 6.x, прежде чем компилировать криптографию 1.8.2, чтобы связать ее:
https://cryptography.io/en/latest/installation/#using-your-own-openssl-on-linux
https://cryptography.io/en/latest/installation/#rhel-centos
Также есть возможность создать свои собственные статически связанные колеса, которые будут работать на ваших собственных системах:
https://cryptography.io/en/latest/installation/#static-wheels
Тем не менее,
, если все, что вам нужно, это просто установить requests
lib (без решения пресловутого SSLError), особенно в Python 2.6.6 наCentOS6, и вам не понадобится поддержка протокола TLS 1.2 от requests
, вы можете просто использовать репозиторий Centos для этого:
$ yum search requests
$ sudo yum install python26-requests
илиВы можете получить и установить requests
таким же образом, как и в вышеупомянутом решении , с колес или с tar.gz, загруженным с: https://pypi.org/project/requests/
Обратите внимание, последняя версияrequests
в PyPI зависит от следующих пакетов Python: urllib3, idna, chardet, certifi
К счастью, эти четыре не имеют других зависимостей и могут быть получены напрямую из PyPI, таким же образом - раздел «Загрузка файлов» в PyPI:
https://pypi.org/project/urllib3/
https://pypi.org/project/idna/
https://pypi.org/project/chardet/
https://pypi.org/project/certifi/
Вы можете загрузить и попробовать установить их последние версии или использовать раздел «История выпусков», чтобы найти более старые версии, в зависимости отна ваш вариант использования и системные требования.
Обратите внимание, что в настоящее время многим веб-серверам (включая PyPI) требуется поддержка TLS 1.2, как в клиентской, так и в серверной части, для установления HTTPS-соединения, поэтому, если вам понадобятся соединения такого типа, requests
не будетработать без исправления ошибки SSLE, как описано выше (или путем компиляции более нового Python 2.7.9+ против OpenSSL версии 1.0.2+, который также должен быть скомпилирован в этом случае, перед компилирует новый Python, чтобы связать модуль ssl
с ним).