Вопрос-Ответ

pip install fails with "connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)"

ошибка установки pip с сообщением "ошибка подключения: [SSL: CERTIFICATE_VERIFY_FAILED] ошибка проверки сертификата (_ssl.c: 598)"

Я новичок в Python и пытаюсь > pip install linkchecker в Windows 7. Некоторые примечания:


  • ошибка установки pip не выполняется независимо от пакета. Например, > pip install scrapy также приводит к ошибке SSL.

  • Ванильная установка Python 3.4.1 включала pip 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
Переведено автоматически
Ответ 1

ОБНОВЛЕНИЕ: 2023-08: в pip.conf нет поля для sslverify false . это могло работать много лет назад, но не работает сегодня.


используйте trusted-host либо в аргументе pip.conf, либо в аргументе командной строки

Вы можете игнорировать ошибки SSL, установив pypi.org и files.pythonhosted.org, а также более старые pypi.python.org узлы в качестве доверенных.

$ pip install --trusted-host pypi.org --trusted-host pypi.python.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 pypi.python.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 пакета python и используйте команду pip pip install wheel_package_name.whl для установки пакета.

Ответ 2

Используйте аргумент --cert:

Вы можете указать сертификат с помощью:

pip --cert <path/to/cert>.pem install <package list>

например:

pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker

Смотрите: Документы » Справочное руководство » по pip

Если указание корневого сертификата вашей компании не работает, возможно, сработает сертификат cURL: http://curl.haxx.se/ca/cacert.pem

Вы должны использовать PEM-файл, а не CRT-файл. Если у вас есть CRT-файл, вам нужно будет преобразовать файл в PEM В комментариях есть сообщения, что теперь это работает с CRT-файлом, но я не проверял.

Также проверьте: проверка SSL-сертификата.

Ответ 3

Постоянное исправление - конфигурация pip

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

Ответ 4

Для меня проблема была устранена путем создания папки 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 постоянно доверял этим сайтам и использовал их для загрузки пакетов.

Если вы не можете найти папку AppData в Windows, напишите %appdata% в проводнике, и она должна появиться.

python windows pip