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 года. Я не включал его уже больше года, и у меня никогда не возникало проблем. Насколько я знаю, сейчас он не используется.