Установка pip завершается с ошибкой "ошибка соединения: [SSL: CERTIFICATE_VERIFY_FAILED] не удалось проверить сертификат (_ssl.c:598)"
Я очень плохо знаком с Python и пытаюсь > pip install linkchecker
на Windows 7. Некоторые примечания:
- Установка pip не выполняется независимо от пакета. Например,
> pip install scrapy
также приводит к ошибке SSL. - Ванильная установка Python 3.4.1 включала в себя пип 1.5.6. Первое, что я попытался сделать, это установить linkchecker. Python 2.7 уже был установлен, он поставляется с ArcGIS.
python
а такжеpip
были недоступны из командной строки, пока я не установил 3.4.1. > pip search linkchecker
работает. Возможно, это связано с тем, что pip-поиск не проверяет SSL-сертификат сайта.- Я нахожусь в сети компании, но мы не используем прокси для доступа в Интернет.
- Каждый компьютер компании (включая мой) имеет доверенный корневой центр сертификации, который используется по разным причинам, включая включение мониторинга трафика TLS на https://google.com/. Не уверен, что это как-то связано с этим.
Вот содержимое моего pip.log после запуска pip install linkchecker
:
Downloading/unpacking linkchecker
Getting page https://pypi.python.org/simple/linkchecker/
Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
Getting page https://pypi.python.org/simple/
Could not fetch URL https://pypi.python.org/simple/: connection error: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/ (Caused by <class 'http.client.CannotSendRequest'>: Request-sent)
Will skip URL https://pypi.python.org/simple/ when looking for download links for linkchecker
Cannot fetch index base URL https://pypi.python.org/simple/
URLs to search for versions for linkchecker:
* https://pypi.python.org/simple/linkchecker/
Getting page https://pypi.python.org/simple/linkchecker/
Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
Could not find any downloads that satisfy the requirement linkchecker
Cleaning up...
Removing temporary dir C:\Users\jcook\AppData\Local\Temp\pip_build_jcook...
No distributions at all found for linkchecker
Exception information:
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\pip\basecommand.py", line 122, in main
status = self.run(options, args)
File "C:\Python34\lib\site-packages\pip\commands\install.py", line 278, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "C:\Python34\lib\site-packages\pip\req.py", line 1177, in prepare_files
url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
File "C:\Python34\lib\site-packages\pip\index.py", line 277, in find_requirement
raise DistributionNotFound('No distributions at all found for %s' % req)
pip.exceptions.DistributionNotFound: No distributions at all found for linkchecker
60 ответов
Вы можете игнорировать ошибки SSL, установив pypi.org
а также files.pythonhosted.org
в качестве доверенных хостов.
$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package_name>
Примечание. В апреле 2018 года индекс пакетов Python был перенесен с pypi.python.org
в pypi.org
, Это означает, что команды "доверенного хоста", использующие старый домен, больше не работают.
Постоянное исправление
Начиная с выпуска pip 10.0, вы сможете навсегда это исправить, просто обновив pip
сам:
$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org pip setuptools
Или просто переустановите его, чтобы получить последнюю версию:
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
(… А затем работает get-pip.py
с соответствующим интерпретатором Python).
pip install <otherpackage>
должен просто работать после этого. Если нет, то вам нужно будет сделать больше, как описано ниже.
Вы можете добавить доверенные хосты и прокси в ваш конфигурационный файл.
pip.ini
(Windows) или pip.conf
(Unix)
[global]
trusted-host = pypi.python.org
pypi.org
files.pythonhosted.org
Альтернативные решения (менее безопасные)
Большинство ответов может представлять проблему безопасности.
Два из обходных путей, которые помогают легко установить большинство пакетов python:
- Использование easy_install: если вы действительно ленивы и не хотите тратить много времени, используйте
easy_install <package_name>
, Обратите внимание, что некоторые пакеты не будут найдены или приведут к небольшим ошибкам. - Используя Wheel: скачайте пакет Wheel of the python и используйте команду pip
pip install wheel_package_name.whl
установить пакет.
Вы можете указать сертификат с этим параметром:
pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker
Смотрите: Документы "Справочное руководство" pip
Если указание корневого сертификата вашей компании не работает, возможно, cURL будет работать: http://curl.haxx.se/ca/cacert.pem
Вы должны использовать файл PEM, а не файл CRT. Если у вас есть файл CRT, вам нужно будет преобразовать файл в PEM
Также проверьте: Подтверждение SSL сертификата.
У меня были проблемы с ssl из-за сетевой безопасности компании, связанной с netscope. Моя машина - это Windows 10 с python 3.9, и у меня сработала следующая команда.
pip config set global.trusted-host "pypi.org files.pythonhosted.org pypi.python.org" --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org
Для меня проблема была решена путем создания папкиpip
, с файлом: pip.ini
в C:\Users\<username>\AppData\Roaming\
например:
C:\Users\<username>\AppData\Roaming\pip\pip.ini
Внутри я написал:
[global]
trusted-host = pypi.python.org
pypi.org
files.pythonhosted.org
Я перезапустил python, а затем pip навсегда доверился этим сайтам.
Ответ Кенорба очень полезен (и великолепен!).
Среди его решений, возможно, это самое простое: --trusted-host
Например, в этом случае вы можете сделать
pip install --trusted-host pypi.python.org linkchecker
Файл pem (или что-то еще) не нужен.
Ответы довольно похожи и немного сбивают с толку. В моем случае проблема была в сертификатах в сети моей компании. Я смог обойти проблему, используя:
pip install --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org oauthlib -vvv
Как видно здесь. Аргумент -vvv можно опустить, если подробный вывод не требуется
Я пробовал большинство решений, представленных в этом блоге ответов, однако ни одно из них не сработало, у меня было этоssl certificant error
когда я пытаюсь установить пакеты python.
Мне удалось выполнить следующую команду:
python -m pip install PACKAGENAME --trusted-host=pypi.python.org --trusted-host=pypi.org --trusted-host=files.pythonhosted.org
Постоянное исправление
pip install --upgrade pip --trusted-host pypi.org --trusted-host files.pythonhosted.org
Например:
pip install <package name> --trusted-host pypi.org --trusted-host files.pythonhosted.org
Самый простой способ, который я нашел, это загрузить и использовать "DigiCert High Assurance EV Root CA" от DigiCert по адресу https://www.digicert.com/digicert-root-certificates.htm
Вы можете посетить https://pypi.python.org/ чтобы проверить издателя сертификата, щелкнув значок замка в адресной строке, или увеличить кредит для гиков с помощью openssl:
$ openssl s_client -connect pypi.python.org:443
CONNECTED(00000003)
depth=1 /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
0 s:/businessCategory=Private Organization/1.3.6.1.4.1.311.60.2.1.3=US/1.3.6.1.4.1.311.60.2.1.2=Delaware/serialNumber=3359300/street=16 Allen Rd/postalCode=03894-4801/C=US/ST=NH/L=Wolfeboro,/O=Python Software Foundation/CN=www.python.org
i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
Последнее значение CN в цепочке сертификатов - это имя CA, которое вам нужно загрузить.
Для одноразового усилия сделайте следующее:
- Загрузите ЭЛТ от DigiCert
- Конвертировать CRT в формат PEM
- Экспортируйте переменную среды PIP_CERT в путь файла PEM
(последняя строка предполагает, что вы используете оболочку bash) перед запуском pip.
curl -sO http://cacerts.digicert.com/DigiCertHighAssuranceEVRootCA.crt
openssl x509 -inform DES -in DigiCertHighAssuranceEVRootCA.crt -out DigiCertHighAssuranceEVRootCA.pem -text
export PIP_CERT=`pwd`/DigiCertHighAssuranceEVRootCA.pem
Чтобы сделать это повторно используемым, поместите DigiCertHighAssuranceEVRootCA.crt где-нибудь распространенным и экспортируйте PIP_CERT соответственно в ваш ~/.bashrc.
Чтобы решить эту проблему раз и навсегда, вы можете убедиться, что у вас есть pip.conf
файл.
Это где ваш pip.conf
должно быть, согласно документации:
В Unix файл конфигурации по умолчанию:
$HOME/.config/pip/pip.conf
который учитывает переменную окружения XDG_CONFIG_HOME.На MacOS файл конфигурации
$HOME/Library/Application Support/pip/pip.conf
если каталог$HOME/Library/Application Support/pip
существует еще$HOME/.config/pip/pip.conf
В Windows файл конфигурации
%APPDATA%\pip\pip.ini
,
Внутри virtualenv:
В Unix и MacOS файл
$VIRTUAL_ENV/pip.conf
В Windows файл выглядит так:
%VIRTUAL_ENV%\pip.ini
Ваш pip.conf
должен выглядеть так:
[global]
trusted-host = pypi.python.org
pip install linkchecker
установлены linkchecker
без жалоб после того, как я создал pip.conf
файл.
У вас есть следующие возможности решить проблему с CERTIFICATE_VERIFY_FAILED
:
- Используйте HTTP вместо HTTPS.
использование
--cert <trusted.pem>
или жеCA_BUNDLE
переменная для указания альтернативного пакета CAНапример, вы можете перейти на неверный URL из веб-браузера и импортировать корневой сертификат в вашу систему.
Бежать
python -c "import ssl; print(ssl.get_default_verify_paths())"
проверить текущий (проверить, если существует).- OpenSSL имеет пару сред (
SSL_CERT_DIR
,SSL_CERT_FILE
), который можно использовать для указания другой базы данных сертификатов PEP-476. - использование
--trusted-host <hostname>
пометить хост как доверенный. - В Python используют
verify=False
заrequests.get
(см.: Проверка сертификата SSL). - использование
--proxy <proxy>
чтобы избежать проверки сертификатов.
Подробнее см.: Оболочка TLS/SSL для объектов сокетов - Проверка сертификатов.
Установите правильное время и дату!
Мэйби, я немного опаздываю,
Для меня оказалось, что мои дата и время были неправильно настроены на Raspberry Pi. В результате все соединения SSL и HTTPS были повреждены с использованием сервера https://files.pythonhosted.org/.
Обновите это так:
sudo date -s "Wed Aug 23 11:12:00 GMT+1 2018"
dpkg-reconfigure tzdata
TL; DR:
pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org -r requirements.txt -vvv
pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org <packageName> -vvv
Итак, у меня уже есть 30+ ответов на вопрос, но в июне 2020 года у меня ничего не работало (пока я был в изоляции).
все были даны в разные моменты прошлого. Я постараюсь сделать так, чтобы этот ответ работал на все времена. Проблема в том, что когда pip устанавливает пакет, он пытается подключиться к URL-адресу хоста, на котором хранится пакет, и не доверяет URL-адресу при его загрузке.
Есть два способа решить эту проблему: Простой и небезопасный: 1. Проверьте, на какой URL-адрес перешел pip для загрузки пакета.
pip install <packageName> -vvv
если вы внимательно проверите вывод, вы увидите, что это может быть какой-то URL-адрес, например pypi.org или может быть pypi.python.org.
если это так, просто добавьте к команде опцию доверенного хоста, как показано ниже:
pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org <packageName> -vvv
или если вы используете файл требований:
pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org -r requirements.txt -vvv
Безопасный способ:
Перейдите к каждому из этих URL-адресов и загрузите их общедоступный сертификат (просто погуглите, как загрузить), создайте цепочку, сохраните ее как файл.pem и выполните команду ниже:
pip --cert YourPemFile.pem install <packageName>
Недавно я столкнулся с этой проблемой из-за фильтра веб-контента моей компании, который использует собственный центр сертификации, чтобы он мог фильтровать трафик SSL. В моем случае PIP не использует системные сертификаты CA, что приводит к указанной вами ошибке. Понижение версии PIP до версии 1.2.1 позже привело к возникновению проблем, поэтому я вернулся к исходной версии, которая шла с Python 3.4.
Мой обходной путь довольно прост: используйте easy_install
, Либо он не проверяет сертификаты (например, старая версия PIP), либо он знает, как использовать системные сертификаты, потому что он работает каждый раз для меня, и я все еще могу использовать PIP для удаления пакетов, установленных с easy_install.
Если это не сработает, и вы можете получить доступ к сети или компьютеру, у которого нет этой проблемы, вы всегда можете настроить свой собственный персональный сервер PyPI: как создать локальный собственный индекс хранилища pypi без зеркала?
Я почти сделал это, пока не попробовал использовать easy_install
как последнее усилие рва.
Вы можете попытаться обойти ошибку SSL, используя http вместо https. Конечно, это не оптимально с точки зрения безопасности, но если вы спешите, это должно сработать:
pip install --index-url=http://pypi.python.org/simple/ linkchecker
У вас есть 4 варианта:
Использование сертификата в качестве параметра
$ pip install --cert /path/to/mycertificate.crt linkchecker
Использование сертификата в pip.conf
Создайте этот файл:
$HOME/.pip/pip.conf (Linux)
%HOME%\pip\pip.ini (Windows)
и добавьте эти строки:
[global]
cert = /path/to/mycertificate.crt
Игнорирование сертификата и использование HTTP
$ pip install --trusted-host pypi.python.org linkchecker
Игнорирование сертификата и использование HTTP в pip.conf
Создайте этот файл:
$HOME/.pip/pip.conf (Linux)
%HOME%\pip\pip.ini (Windows)
и добавьте эти строки:
[global]
trusted-host = pypi.python.org
Источник
Ответы использовать
pip install --trusted-host pypi.python.org <package>
Работа. Но вам придется проверить, есть ли перенаправления или кэши pip
бьет На Windows 7 с pip 9.0.1
Мне пришлось бежать
pip install \
--trusted-host pypi.python.org \
--trusted-host pypi.org \
--trusted-host files.pythonhosted.org \
<package>
Вы можете найти их с подробным флагом.
Не пропустите! Найдено безопасное решение для Linux
Все решения добавления
pypi.org
на доверенные сайты с
--trusted-host
небезопасно, в основном пропускает https, что не решает проблему.
Всем, кто использует этот подход, попробуйте обновить свой сертификат таким образом и удалить
--trusted-host
флаг:
sudo yum -y update ca-certificates
export PIP_CERT=/etc/ssl/certs/ca-bundle.crt
Безопасность имеет значение!
Я установил pip 1.2.1 с помощью easy_install и обновил до последней версии pip (6.0.7 на тот момент), которая может устанавливать пакеты в моем случае.
easy_install pip==1.2.1
pip install --upgrade pip
Прежде всего,
pip install --trusted-host pypi.python.org <package name>
не работал для меня. Я продолжал получать ошибку CERTIFICATE_VERIFY_FAILED. Однако в сообщениях об ошибках я заметил, что они ссылаются на сайт "pypi.org". Поэтому я использовал это имя в качестве доверенного хоста вместо pypi.python.org. Это почти привело меня туда; загрузка все еще терпела неудачу с CERTIFICATE_VERIFY_FAILED, но на более позднем этапе. Найдя ссылку на веб-сайт, который не работал, я включил его в список доверенных хостов. В конечном итоге у меня сработало:
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package name>
Для Питона 3.10
Добавить/обновить файл с содержимым
[global]
trusted-host = pypi.python.org
pypi.org
files.pythonhosted.org
местоположение файла
MacOS — $HOME/Библиотека/Поддержка приложений/pip/pip.conf
Unix — $HOME/.config/pip/pip.conf
Windows — %APPDATA%\pip\pip.ini
Чтобы решить проблему с проверкой SSL,
это то, что я пытался и работал. Я получал сообщение об ошибке, когда пытался установить ansible, поэтому я добавил ANSIBLE в имя пакета.
Это говорит pip доверять хосту pypi.python.org, с которого мы скачиваем, и доверять его нашему пакету.
pip install --trusted-host pypi.python.org ansible
pip install --trusted-host pypi.python.org --upgrade pip
Возможно, я опаздываю с ответом, но я хотел бы рассказать, что я сделал, чтобы исправить это в своем офисе.
Я попробовал указать IP-адрес и порт корпоративного прокси, но ничего не вышло.
Примечание: - 1. В моей системе отсутствовал файл pip.conf. 2.Python3.6.X. 3.Pip3.
Я выполнил следующие шаги. Шаг 1. Установите пакет сертификатов -pip --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org install certifi
Создайте файл pip.conf, используя следующую последовательность команд. $ cd ~
$ ls –a
$ cd .config
$ ls
$ mkdir pip
пункт $ cd
$ nano pip.conf
-Запишите приведенную ниже инструкцию в этот файл .conf, сохраните и закройте его.
[глобальный] доверенный хост = pypi.python.org files.pythonhosted.org pypi.org pypi.io
Все готово, и все заработало.
Была та же проблема, пытаясь pip install ftputil
с ActivePython 2.7.8, ActivePython 3.4.1 и "стандартным" Python 3.4.2 на 64-битной Windows 7 Enterprise. Все попытки провалились с теми же ошибками, что и OP.
Обходил проблему для Python 3.4.2 путем понижения до pip 1.2.1: easy_install pip==1.2.1
(см. /questions/178827/problema-pipsa-pri-ustanovke-prakticheski-lyuboj-biblioteki/178839#178839). То же исправление также работало для ActivePython 2.7.8.
Ошибка, о которой сообщалось в марте 2013 года, все еще остается открытой: https://github.com/pypa/pip/issues/829.
Ничто на этой странице не работало для меня, пока я не использовал опцию --verbose, чтобы убедиться, что он хочет получить доступ к файлам files.pythonhosted.org, а не к pypi.python.org:
pip install --trusted-host files.pythonhosted.org <package_name>
Поэтому проверьте URL-адрес, на котором он действительно не работает, с помощью параметра --verbose.
Я не уверен, если это связано, но у меня была похожая проблема, которая была исправлена путем копирования этих файлов из Anaconda3/Library/bin в Anaconda3 / DLLs:
libcrypto-1_1-x64.dll
libssl-1_1-x64.dll
В моем случае это было связано с тем, что SSL-сертификат был подписан внутренним центром сертификации моей компании. Использование обходных путей, таких как pip --cert
не помогло, но следующий пакет сделал:
pip install pip_system_certs
Смотрите: https://pypi.org/project/pip-system-certs/
Этот пакет исправляет pip и запрашивает во время выполнения использование сертификатов из системного хранилища по умолчанию (а не связанных сертификатов ca).
Это позволит pip проверять соединения tls / ssl с серверами, чей сертификат является доверенным при установке вашей системы.
Одним из решений (для Windows) является создание файла с именем pip.ini
на %AppData%\pip\
Папка (создайте папку, если она не существует) и вставьте следующие данные:
[global]
cert = C:/certs/python_root.pem
proxy = http://my_user@my_company.com:my_password@proxy_ip:proxy_port
... и тогда мы можем выполнить инструкцию по установке:
pip3 install PyQt5
Другой вариант - установить пакет, используя аргументы для прокси и сертификата...
$ pip3 install --proxy http://my_user@my_company.com:my_password@proxy_ip:proxy_port \
--cert C:/certs/python_root.pem PyQt5
Конвертировать сертификат *.cer
файлы к требуемому *.pem
В формате выполните следующую инструкцию:
$ openssl x509 -inform der -in python_root.cer -out python_root.pem
Надеюсь, это поможет кому-то!
Краткое решение:
easy_install <package name>
Например:
easy_install pandas
Альтернативное решение:
pip install <package_name> --trusted-host pypi.org --trusted-host files.pythonhosted.org
Пример:
pip install pandas --trusted-host pypi.org --trusted-host files.pythonhosted.org
Недавно я столкнулся с той же проблемой в Python 3.6 с Visual Studio 2015. Потратив 2 дня, я получил решение, и оно отлично работает для меня.
Я получил сообщение об ошибке ниже при попытке установить NumPy с помощью pip или из Visual Studio. Сбор NumPy Не удалось получить URL https://pypi.python.org/simple/numpy/: При подтверждении сертификата SSS возникла проблема: [SSL: CERTIFICATE_VERIFY_FAILED] проверка сертификата не удалась (_ssl.c:748) - пропуск Не удалось найти версию, которая удовлетворяет требованию numpy (из версии:) Не найдено соответствующего распределения для numpy
Разрешение:
Для ОС Windows
- open -> "%appdata%" Создать папку "pip", если она не существует.
- В папке pip создайте файл "pip.ini".
- Отредактируйте файл и напишите
[Глобальный]
trust-host = pypi.python.org Сохраните и закройте файл. Теперь установите с помощью pip/visual studio, все работает нормально.