pip всегда не проходит проверку ssl

Пип всегда терпит неудачу, даже когда я делаю pip install dedupe или же pip install --trusted-host pypi.python.org dedupe

Выходные данные всегда одинаковы, несмотря ни на что:

Собирая дедупе

Повторная попытка (Retry(всего =4, подключение = Нет, чтение = Нет, перенаправление = Нет, состояние = Нет)) после разрыва соединения, вызванного 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED]) сертификат не прошел проверку (_ssl.c:777)'),)': /simple/dedupe/
Повторная...

пропуская

Не удалось найти версию, которая удовлетворяет требованию дедупликации (из версий:) Не найдено соответствующего распределения для дедупликации

Поэтому я удалил анаконду и переустановил ее. То же самое.

Как вы думаете, проблема в том, что мой файл _ssl.c (который я понятия не имею, где он находится) должен быть поврежден или что-то? Зачем pip ссылаться на это, если я все равно говорю об обходе проверки ssl?

6 ответов

Решение

Это может быть связано с недавней сменой доменов PyPI. Поэтому убедитесь, что ваш брандмауэр / прокси-сервер разрешает доступ к / из:

  • pypi.org
  • files.pythonhosted.org

Вы также можете попробовать что-то вроде:
$ python -m pip <command> --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org ... --proxy ...

--trusted-host опция на самом деле не обходит SSL, но позволяет пометить хост как доверенный, когда (и только когда) у него нет действующего (или какого-либо) HTTPS. Это не должно иметь большого значения для PiPY, потому что pypi.org (ранее pypi.python.org) действительно использует HTTPS, и перед ним есть CDN, который всегда предписывает требование рукопожатия TLSv1.2 независимо от параметров подключаемого клиента pip. Но если у вас были свои локальные зеркала pypi.org с доступом только по HTTP, затем --trusted-host может быть удобно Да, и если вы сидите за прокси-сервером, пожалуйста, не забудьте также указать его:--proxy [user:passwd@]proxyserver:port

В противном случае вам может потребоваться обновить системную библиотеку openssl и / или pip - попробуйте запустить pip с -vvv возможность добавить многословие к выводу и посмотреть, есть ли на самом деле tlsv1 alert protocol version исправлена ​​ошибка в этой теме.

Это сработало для меня, попробуйте следующее:

pip install --trusted-host=pypi.org --trusted-host=files.pythonhosted.org --user {name of whatever I'm installing}

У меня возникла та же проблема, потому что у меня установлено Zscaler (программное обеспечение для облачной безопасности), которое вызывало:

  • Хост URL для заблокированных пакетов python
  • выскакивает предупреждение о недействительном сертификате SSL
  • Сертификат проверки SSL не является доверенным

Как упоминалось другими, ниже будут исправлены отдельные установки пакетов. pypi.python.orgне требуется, так как он был заменен на pypi.org.

      pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package to install>

Я навсегда исправил проблему, создав файл ( pip.confв Unix) и добавив следующее:

      [global]
trusted-host = pypi.python.org
               pypi.org
               files.pythonhosted.org

См. файлы конфигурации pip, чтобы узнать, как найти ваш pip.ini, или куда его поместить, если вам нужно его создать.

Мой способ - это упрощение ответа @Alex C:

python -m pip install --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org --upgrade pip

Вышеприведенная ошибка или такая, как она была вызвана тем, что виртуальная машина (ВМ) не синхронизирована по времени, моя гостевая виртуальная машина Ubuntu прошла несколько дней назад.

Я выполнил эту рекомендацию, чтобы виртуальная машина выбрала правильное сетевое время:

sudo timedatectl set-ntp on

Это заставляет гостевую ОС Ubuntu получать сетевое время. (Возможно, вам придется указать сетевой источник времени... Я использовал эту статью: Digital Ocean - Как установить время в Ubuntu)

Проверьте правильность времени:

timedatectl

Перезапустите сбойную команду pip.

Для тех, кто использует macOS:

Проблема в том, что Python 3.6+ больше не использует OpenSSL macOS, а использует собственный встроенный OpenSSL, который не имеет доступа к корневым сертификатам macOS. Вот постоянное исправление.

Сначала запустите эти команды:

      # Update pip
pip3 --trusted-host files.pythonhosted.org --trusted-host pypi.org install --upgrade pip
# Install certifi
pip3 --trusted-host files.pythonhosted.org --trusted-host pypi.org install certifi

Добавьте это в свой~/.bash_profile(или~/.zprofileили любой другой файл запуска, который использует ваша оболочка), чтобы ваша среда знала, где найти пакет сертификатов CA:

      if [ -x "$(command -v python3)" ]; then
    # Side note: 'python3 -m certifi' is also equivalent to
    # 'python3 -c "import certifi; print(certifi.where())"'                                                                                             
    export SSL_CERT_FILE="$(python3 -m certifi)"
    export REQUESTS_CA_BUNDLE="${SSL_CERT_FILE}"
fi

Перезапустите оболочку или измените исходный код файла запуска оболочки:

      . ~/.bash_profile

pip3 (или любой скрипт Python, выполняющий HTTPS-запросы) теперь должен работать без использования длинной команды pip3 или опасного отключения проверки сертификата.

Примечание: вы можете заметить, что я не включил pypi.python.org в качестве доверенного хоста. Это связано с тем, что он устарел с 2018 года. Я не включал его уже больше года, и у меня никогда не возникало проблем. Насколько я знаю, сейчас он не используется.

Другие вопросы по тегам