Решение: Ошибка TLS/SSL при установке модулей в Python

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если вы столкнулись с ошибкой связанной с модулем SSL в Python, следуйте указанным ниже шагам:

  1. Переустановите Python, не забыв проставить галочку напротив пункта поддержки SSL в процессе установки.
  2. Проверьте работоспособность SSL в Python, используя команду python -m ssl.
  3. Для пользователей Unix-подобных систем установите OpenSSL, запустив следующие команды:
Bash
Скопировать код
./configure --with-openssl  # Указываем путь до OpenSSL
make   # Даем команду на компиляцию
make install  # Производим установку скомпилированных файлов

Таким образом, настройка SSL для Python выполнена, и pip будет функционировать без возникновения ошибок.

Кинга Идем в IT: пошаговый план для смены профессии

Анализ проблемы SSL

SSL – это аббревиатура, которая может ввести вас в заблуждение, если она отсутствует в Python. Без нее Python невозможно осуществлять безопасное соединение с серверами по HTTPS, что, в свою очередь, приводит к тому, что pip не может скачивать необходимые пакеты. Причины этого могут быть различными.

Запомните три следующих пути в вашей файловой системе: D:\Anaconda3, D:\Anaconda3\Scripts и D:\Anaconda3\Library\bin. Отдельное внимение уделите последнему, так как именно в нем необходимые для работы SSL/TLS ключевые файлы OpenSSL располагаются.

Разговор о MacOS и Linux

Пользователи Mac, вашим спасением при возникновении проблем с SSL будет Homebrew. Для переустановки Python с OpenSSL, используйте следующие команды:

Bash
Скопировать код
brew install openssl  # Устанавливаем OpenSSL через утилиту Brew
brew install python   # Устанавливаем Python

Таким образом, MacOS настроена и готова к работе с SSL-соединениями.

Для пользователей Debian существует пакет libssl-dev, который содержит всё необходимое для работы SSL в Python:

Bash
Скопировать код
sudo apt-get install libssl-dev  # Устанавливаем пакет, содержащий поддержку SSL

Правильно настройте переменные окружения для решения проблем с SSL

Переменные окружения – это как навигационная система для Python. Если они настроены неверно, Python потеряется:

  • Для пользователей Anaconda или Miniconda, добавьте D:\Anaconda3, D:\Anaconda3\Scripts, и D:\Anaconda3\Library\bin в переменные окружения.
  • Перезапустите терминал, чтобы активировать новые пути.
  • Проверьте доступность модуля SSL, запустив python -m ssl.

Если вы установили Python вручную на Unix подобных системах и у вас возникли проблемы с SSL:

  • Будьте аккуратны при распаковке архивов Python перед выполнением команд configure/make.
  • Убедитесь, что файлы libcrypto и libssl размещены в нужных директориях.

Установка OpenSSL на MacOS с использованием Homebrew

Если вы управляете OpenSSL через Homebrew на MacOS, избегайте использования флага --ignore-dependencies. Он может привести к проблемам в работе с зависимостями Python:

Bash
Скопировать код
brew install openssl --ignore-dependencies  # Не пренебрегайте важностью зависимостей

Копирование файлов как последняя мера

Иногда решение проблемы сводится к простому копированию файлов OpenSSL в директорию DLLs Python:

  • Данные файлы обычно располагаются в директории Library\bin Anaconda или Miniconda.
  • Выполните поиск и копирование их в директорию DLLs установленной версии Python.

Пользователи Python 2.7 рекомендуются обновить версию до Python 3.7 для получения улучшенной поддержки SSL. После такого обновления pip и модуль SSL будут работать совместно без конфликтов.

Визуализация

Представьте конфигурацию SSL как логистическую цепь:

Markdown
Скопировать код
Грузовик (pip🚛): Загружен товаром
Дороги (Интернет-пути🛣️): Требуют безопасности, необходим TLS/SSL

Вашему pip необходимо преодолеть преграду:

Markdown
Скопировать код
🚛❌🔒 Нет SSL, грузовик не может двигаться по безопасным путям!

Проясним:

Markdown
Скопировать код
🚛 = Pip, передвигающийся по маршруту для доставки пакетов (📦)
🛣️ = URL, к которому должна быть осуществлена безопасная доставка (TLS/SSL)
🔒 = Наличие SSL существенно для доступности пути
❌ = Без обеспечения безопасности доставка не возможна

Необходимо обеспечить поддержку SSL для вашего Python:

Markdown
Скопировать код
🔑 = Поддержка SSL настроена
🚛✅🔒 = Грузовик свободно перемещается по безопасным дорогам с помощью модуля SSL!

Полезные материалы

  1. Проблема SSL: CERTIFICATE_VERIFY_FAILED на Stack Overflow — Обсуждение решения проблем, связанных с SSL, в pip.
  2. Документация по модулю SSL в Python — Описание работы модуля SSL в официальной документации Python.
  3. Установка пакетов – Руководство по упаковке Python — Инструкции по установке пакетов предоставленные Python Packaging Authority.
  4. Руководство по установке Pip — Гид по установке и устранению проблем pip.
  5. Репозиторий Pyenv на GitHub — Большой выбор различных версий Python на одной платформе.