ошибка установки 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%
в проводнике, и она должна появиться.