#Что означает ошибка
Could not fetch URL https://pypi.org/simple/: There was a problem confirming the ssl certificate
pip install с ошибкой SSLError: Could not fetch URL https://pypi.org/simple/... или HTTPSConnectionPool ... SSLError означает, что pip не смог установить защищённое соединение с PyPI. Причины: старая версия Python и pip, перехват трафика корпоративным прокси, неверное время или блокировка.
В этой статье — сетевая и версионная сторона; ошибки проверки сертификата разобраны отдельно.
Начните с проверки доступности PyPI.
pip не может проверить сертификат PyPI: проблемы с корневыми сертификатами, перехват трафика антивирусом или прокси, неверные дата и время. Обновите pip и сертификаты.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Устаревший pip | Старая версия. | Обновите. |
| Перехват HTTPS антивирусом | Сканирование. | Проверьте. |
| Корпоративный прокси | Сертификат. | Укажите cert. |
| Неверное время | Часы. | Исправьте. |
#Пошаговое решение
- Проверьте версии Python и pipВ терминале того окружения, где выполняется pip, запустите
python -m pip --versionиpython --version, затем повторите установку и выпишите точный SSL-текст:CERTIFICATE_VERIFY_FAILED,certificate has expired,hostname mismatchили другой. Укажите адрес реестра в сообщении: PyPI или внутренний. Сначала проверьте часы компьютера через системные настройки даты/времени; неверное время приводит к ошибкам проверки сертификатов. Не используйте--trusted-hostдля обхода проверки. - Проверьте доступ к pypi.orgОткройте официальный адрес
https://pypi.org/simple/в браузере и убедитесь, что нет предупреждения о сертификате. В системном терминале можно выполнитьcurl -I https://pypi.org/simple/; это проверка через другое TLS-хранилище, поэтому её успех не гарантирует успех Python. Если браузер тоже сообщает о недоверенном сертификате или подмене имени, не продолжайте вводить учётные данные и передайте адрес администратору сети. В корпоративной сети дополнительно проверьте, что указан правильный внутренний индекс. - Проверьте прокси и VPNПроверьте VPN/прокси: в терминале выполните
python -m pip config list, изучитеPIP_INDEX_URL,PIP_CERT,REQUESTS_CA_BUNDLE,SSL_CERT_FILE, если они установлены. Конфигурация могла указывать на устаревший корпоративный корневой сертификат. Не удаляйте настройки без выяснения источника; запросите у администратора актуальный сертификат и адрес прокси по внутреннему каналу. Если проблема возникает только в корпоративной сети, настройку доверия должен подтвердить её администратор. - Обновите certifi и ca-certificatesНа Linux обновления пакета системных сертификатов (
ca-certificates) выполняются через пакетный менеджер дистрибутива и по согласованию с администратором. Для Python с официального установщика python.org на macOS можно применитьInstall Certificates.commandиз папки соответствующей версии Python в «Программах», если он предусмотрен. В новых выпусках pip может использовать системное хранилище через truststore; обновлениеcertifiвнутри этого же Python не всегда исправляет ошибку установки pip, так как проблема может находиться в серверной цепочке или прокси. - Проверьте PIP_CERT и SSL_CERT_FILEЕсли администратор выдал проверенную цепочку корпоративного центра сертификации, можно указать pip соответствующий PEM-файл настройкой
--cert /полный/путь/corp-ca.pemдля конкретного запуска или согласованной конфигурациейPIP_CERT. Убедитесь, что файл действительно существует и получен от вашей организации. Затем повторите исходную установку; успех — скачанные пакеты без предупреждений TLS. Не добавляйте--trusted-host,verify=Falseи не выключайте проверку сертификатов; при сохранении ошибки передайте точный журнал без паролей. - Диагностика без установкиLinux · Терминал (Bash)КомандаДиагностика без установки. Конфигурация может содержать закрытые URL и токены — не пересылайте вывод полностью.
python -m pip --versionpython --versionpython -m pip config list
#Проверка
Выполните python -m pip --version и python --version. Старые Python (3.6 и ниже) не поддерживают современные TLS-требования PyPI. Проверьте доступ: curl -I https://pypi.org/simple/ и дату системы. Отключите VPN или включите, если провайдер блокирует. Попробуйте python -m pip install --upgrade pip через мобильный интернет.
#Прокси и зеркала
Для корпоративного прокси используйте одобренные организацией параметры из настройки pip и доверенный CA-сертификат. Не добавляйте --trusted-host: такой обход ослабляет защиту TLS. Не меняйте индекс на публичный автоматически, если проект использует внутренние пакеты или утверждённый реестр.
#Окружение
Обновление доверенных сертификатов зависит от ОС и конкретного Python. На macOS в некоторых официальных установках есть Install Certificates.command; для системного Python Linux сертификаты обычно управляются средствами дистрибутива. Не пытайтесь обновить certifi через неисправное соединение в качестве единственного решения: сначала определите, какое хранилище доверия использует pip и не подменяет ли сертификат корпоративный прокси.
curl -I https://pypi.org/simple/# При наличии certifi в том же Python:python -m pip show certifi