pip3 обновление зависимостей Python – ошибка SSL (небезопасная устаревшая renegotiation не удалась)

Вопрос или проблема

Я пытаюсь обновить несколько зависимостей Python (в основном remotior-sensus) с помощью OSGeo4W, установленного с QGIS 3.34.9. Это использует Python 3.12.4.

Я следую инструкциям на этом сайте: https://semiautomaticclassificationmanual.readthedocs.io/en/latest/installation_win64.html#qgis-download-and-installation и смог загрузить зависимости, но не могу их установить.

Используя

pip3 install --upgrade remotior-sensus scikit-learn torch

Я получаю следующее:

Требуемая версия уже удовлетворена: remotior-sensus в c:\progra~1\qgis33~1.9\apps\python312\lib\site-packages (0.3.5)
WARNING: Повторная попытка (Retry(total=4, connect=None, read=None, redirect=None, status=None)) после разрыва соединения из-за 'SSLError(SSLError(1, '[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] небезопасная устаревшая повторная renegotiation отключена (_ssl.c:1000)'))': /simple/remotior-sensus/
WARNING: Повторная попытка (Retry(total=3, connect=None, read=None, redirect=None, status=None)) после разрыва соединения из-за 'SSLError(SSLError(1, '[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] небезопасная устаревшая повторная renegotiation отключена (_ssl.c:1000)'))': /simple/remotior-sensus/
WARNING: Повторная попытка (Retry(total=2, connect=None, read=None, redirect=None, status=None)) после разрыва соединения из-за 'SSLError(SSLError(1, '[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] небезопасная устаревшая повторная renegotiation отключена (_ssl.c:1000)'))': /simple/remotior-sensus/
WARNING: Повторная попытка (Retry(total=1, connect=None, read=None, redirect=None, status=None)) после разрыва соединения из-за 'SSLError(SSLError(1, '[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] небезопасная устаревшая повторная renegotiation отключена (_ssl.c:1000)'))': /simple/remotior-sensus/
WARNING: Повторная попытка (Retry(total=0, connect=None, read=None, redirect=None, status=None)) после разрыва соединения из-за 'SSLError(SSLError(1, '[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] небезопасная устаревшая повторная renegotiation отключена (_ssl.c:1000)'))': /simple/remotior-sensus/
Не удалось получить URL https://pypi.org/simple/remotior-sensus/: возникла проблема с подтверждением ssl сертификата: HTTPSConnectionPool(host="pypi.org", port=443): максимальное количество попыток превышено с URL: /simple/remotior-sensus/ (вызвано SSLError(SSLError(1, '[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] небезопасная устаревшая повторная renegotiation отключена (_ssl.c:1000)'))) - пропущено
WARNING: Повторная попытка (Retry(total=4, connect=None, read=None, redirect=None, status=None)) после разрыва соединения из-за 'SSLError(SSLError(1, '[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] небезопасная устаревшая повторная renegotiation отключена (_ssl.c:1000)'))': /simple/scikit-learn/
WARNING: Повторная попытка (Retry(total=3, connect=None, read=None, redirect=None, status=None)) после разрыва соединения из-за 'SSLError(SSLError(1, '[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] небезопасная устаревшая повторная renegotiation отключена (_ssl.c:1000)'))': /simple/scikit-learn/
WARNING: Повторная попытка (Retry(total=2, connect=None, read=None, redirect=None, status=None)) после разрыва соединения из-за 'SSLError(SSLError(1, '[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] небезопасная устаревшая повторная renegotiation отключена (_ssl.c:1000)'))': /simple/scikit-learn/
WARNING: Повторная попытка (Retry(total=1, connect=None, read=None, redirect=None, status=None)) после разрыва соединения из-за 'SSLError(SSLError(1, '[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] небезопасная устаревшая повторная renegotiation отключена (_ssl.c:1000)'))': /simple/scikit-learn/
WARNING: Повторная попытка (Retry(total=0, connect=None, read=None, redirect=None, status=None)) после разрыва соединения из-за 'SSLError(SSLError(1, '[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] небезопасная устаревшая повторная renegotiation отключена (_ssl.c:1000)'))': /simple/scikit-learn/
Не удалось получить URL https://pypi.org/simple/scikit-learn/: возникла проблема с подтверждением ssl сертификата: HTTPSConnectionPool(host="pypi.org", port=443): максимальное количество попыток превышено с URL: /simple/scikit-learn/ (вызвано SSLError(SSLError(1, '[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] небезопасная устаревшая повторная renegotiation отключена (_ssl.c:1000)'))) - пропущено
ОШИБКА: Не удалось найти версию, удовлетворяющую требованию scikit-learn (из версий: ни одной)
ОШИБКА: Нет соответствующего дистрибутива для scikit-learn
Не удалось получить URL https://pypi.org/simple/pip/: возникла проблема с подтверждением ssl сертификата: HTTPSConnectionPool(host="pypi.org", port=443): максимальное количество попыток превышено с URL: /simple/pip/ (вызвано SSLError(SSLError(1, '[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] небезопасная устаревшая повторная renegotiation отключена (_ssl.c:1000)'))) - пропущено

У кого-нибудь есть идеи? Мне действительно нужно это установить, чтобы я мог использовать один из инструментов.

UNSAFE_LEGACY_RENEGOTIATION_DISABLED отключено, и ваша ошибка происходит на _ssl.c:1000.

Я не уверен, используете ли вы Azure, но независимо от этого, это может помочь:

Подтверждение сертификата не прошло. Это обычно происходит, когда используется Azure CLI за прокси, который перехватывает трафик с самоподписанным сертификатом. Пожалуйста, добавьте этот сертификат в доверенный CA bundle. Подробная информация: https://docs.microsoft.com/cli/azure/use-cli-effectively#work-behind-a-proxy.

Источник: https://learn.microsoft.com/en-us/answers/questions/1618774/az-login-(ssl-unsafe-legacy-renegotiation-disabled

Проблема, таким образом, заключается в проблеме подтверждения сертификата, и если вы используете свой CLI за прокси, который перехватывает трафик с самоподписанным сертификатом, то это является причиной проблемы, которую вы видите. Чтобы улучшить ситуацию, убедитесь, что у вас есть правильный CA bundle.

RedHat имеет эту статью о CA bundles прокси: https://docs.openshift.com/container-platform/4.8/security/certificates/updating-ca-bundle.html

Ответ или решение

Ошибка SSL-соединения при обновлении зависимостей Python с помощью pip3

При обновлении зависимостей Python, таких как remotior-sensus, scikit-learn или torch с помощью команды pip3 install --upgrade, вы столкнулись с ошибкой SSL, связанной с "unsafe legacy renegotiation". Эта проблема может возникать по нескольким причинам, и в данной статье мы рассмотрим основные аспекты ее решения.

Причины ошибки

  1. Безопасность SSL: Сообщение об ошибке указывает, что "нераспознанная старая переориентация" (unsafe legacy renegotiation) отключена. Это связано с тем, что современные версии OpenSSL и Python стараются поддерживать более высокий уровень безопасности, и некоторые старые методы шифрования могут быть отключены.

  2. Проблемы с сертификатами: Чаще всего ошибка возникает из-за проблем с проверкой SSL-сертификатов, что может быть связано с использованием устаревших сертификатов или с тем, что ваше соединение проходит через прокси-сервер, который использует самоподписанные сертификаты.

Решения проблемы

1. Проверка сетевых настроек

Если вы находитесь за прокси-сервером, возможно, он перехватывает трафик и использует свой собственный сертификат. В этом случае вам необходимо добавить этот сертификат в доверенный CA-репозиторий. Вы можете сделать это, проследуя за следующими шагами:

  • Получите сертификат: Узнайте у вашего сетевого администратора, каким образом можно получить корневой сертификат вашего прокси-сервера.
  • Добавьте сертификат в хранилище: После получения сертификата добавьте его в хранилище сертификатов Python. Это можно сделать, обновив cacert.pem файл, который используется для проверки SSL.
2. Обновление pip

Убедитесь, что вы используете последнюю версию pip. Для этого выполните команду:

python -m pip install --upgrade pip

Иногда обновление pip может помочь устранить проблемы с совместимостью, обеспечивая поддержку последних стандартов безопасности.

3. Настройки OpenSSL

Если вы используете Windows, вы можете изменить параметры OpenSSL. Убедитесь, что в вашей системе установлена последняя версия OpenSSL. Если вы контролируете среду, в которой выполняется Python, вам следует проверить, включен ли пакет openssl и его версии:

  1. Откройте терминал.
  2. Введите команду python -c "import ssl; print(ssl.OPENSSL_VERSION)" для проверки версии OpenSSL.
  3. Если версия устарела, рассмотрите возможность ее обновления.
4. Использование альтернативных источников

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

pip install --upgrade remotior-sensus scikit-learn torch --index-url https://pypi.python.org/simple

или вы можете отключить проверку SSL (но это небезопасно и не рекомендуется):

pip install --upgrade remotior-sensus scikit-learn torch --trusted-host pypi.org --trusted-host files.pythonhosted.org

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...