pip install не работает с "ошибкой соединения: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)"

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

  • pip install не работает независимо от пакета. Например, > 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 search не проверяет 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
Комментарии к вопросу (7)

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

$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org 

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

Постоянное Исправление

С момента выхода Пип 10.0, вы должны быть в состоянии исправить это навсегда только за счет модернизации Пип себя:

$ 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).

типун установить <otherpackage> должно работать после этого. Если нет, то вам придется сделать больше, как объяснено ниже.


Вы можете хотеть добавить надежные узлы и прокси в файле config.

типун.Ини (Windows) или типун.конф (в Unix)

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

Альтернативные решения (менее безопасно)

Большинство ответов могут возникнуть проблемы с безопасностью.

Два решения, которые помогают в установке большинство пакетов Python с легкостью будет:

  • Используя easy_install: если вы действительно ленивы, и Дон'т хотите тратить много времени, использовать easy_install <имя_пакета>`. Обратите внимание, что некоторые пакеты выиграл'т быть найдены или мелких ошибок.
  • Колесиком: скачать [колесо питона пакет][4] и используйте Пип команда `Пип установить wheel_package_name.колесо для установки пакета.

[4]: http://www.lfd.uci.edu/~и gohlke/pythonlibs/

Комментарии (40)

С помощью этого параметра можно указать сертификат:

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

См: Docs » Reference Guide » pip

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

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

Также проверьте: SSL Cert Verification.

Комментарии (11)

ответ kenorb это является очень полезным (и большой!). <БР>среди его решения, возможно, это самый простой: --надежного хозяина

Например, в этом случае вы можете сделать

pip install --trusted-host pypi.python.org linkchecker

Файл PEM(или что-то еще) - это лишнее.

Комментарии (2)

Для меня проблема была решена путем создания папки типун, с файл: типун.Ини в C:\Users\<имя пользователя>\папка AppData\роуминг\ е.г:

C:\Users\\AppData\Roaming\pip\pip.ini

Внутри него я писал:

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

Я перезапустил Python, а затем типун постоянно доверяли такие сайты и использовать их для загрузки пакеты.

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

Комментарии (4)

Ответы очень похожи и немного запутанным. В моем случае, сертификаты в моей компании'сетевые с Проблема. Я смог обойти эту проблему с помощью:

pip install --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org oauthlib -vvv

Как видно здесь. Аргумент- " ВВВ " может быть опущен, если подробного вывода не требуется

Комментарии (2)

Самый простой способ я'вэ нашел, чтобы скачать и использовать в "компания DigiCert высокой надежности ЭВ корневого ЦС" От компания DigiCert в https://www.digicert.com/digicert-root-certificates.htm#roots

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

Для разового усилия, выполнить следующие действия:

  1. Скачать ЭЛТ от компания DigiCert
  2. Преобразования ЭЛТ в формате PEM
  3. Экспортировать переменную окружения PIP_CERT на путь файл PEM

(последняя строка предполагает, что вы используете оболочку Bash) перед запуском типун.

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.ЭЛТ где-то общие и экспорта PIP_CERT соответственно в ваш ~/.bashrc следующее.

Комментарии (1)

Постоянное Исправление

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

Например:

pip install  --trusted-host pypi.org --trusted-host files.pythonhosted.org
Комментарии (0)

Чтобы раз и навсегда решить эту проблему, вы можете проверить, что у вас типун.файл conf`.

Это где Ваш пункт.conf` должен быть, согласно документации:

в Unix файл конфигурации по умолчанию: $дома/.конфиг/пункта/пипса.conf и который уважает переменной среды XDG_CONFIG_HOME.

на macOS файл конфигурации $главная/библиотека/поддержка приложений/пункта/пипса.conf и если каталог $главная/библиотека/поддержка приложений/Пип существует еще$дома/.конфиг/пункта/пипса.conf`и

на Windows файл конфигурации папке %AppData%\Пип\типун.Ини.

Внутри виртуальное окружение:

в Unix и macOS файл $VIRTUAL_ENV/Пип.confи

в Windows файл: %VIRTUAL_ENV%\типун.Ини

Свой типун.conf` должен выглядеть так:

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

типун установить это дополнение не совместимо "установленные" это дополнение не совместимо, не жалуется, после того, как я создалтипун.файл conf`.

Комментарии (5)

Вы'вэ следующие возможности решить проблему с CERTIFICATE_VERIFY_FAILED:

  • Использовать HTTP вместо HTTPS.
  • Используйте --свиду <надежные.УГР> или CA_BUNDLE переменная для указания альтернативного пакета Калифорния.

Е. Г. вы можете перейти к неспособности URL из веб-браузера и импортировать корневой сертификат в систему.

  • Запустить питон -с "и импорт SSL; в печати(протокол SSL.get_default_verify_paths())" В для проверки текущего (проверка, если существует).
  • В OpenSSL есть пара сред (SSL_CERT_DIR, SSL_CERT_FILE), которые могут использоваться, чтобы определить различные базы данных сертификатов<суп>Пеп-476</суп>.
  • Используйте --надежного хозяина в <имя> чтобы пометить узел как надежные.
  • В Python использовать проверить=falseвзапросы.сделать` (см.: проверка сертификата SSL).
  • Используйте `--прокси <прокси> чтобы избежать проверки сертификатов.

Подробнее на: протокол TLS/SSL оболочку для объектов розетке - проверка сертификатов.

Комментарии (0)

Установить время и дату правильно!

Для меня оказалось, что моя дата и время было настроено на Raspberry Пи. В результате оказалось, что все SSL и https-подключения не удалась, используя https://files.pythonhosted.org/ сервер.

Обновление## он такой:

Баш дата -с судо "в СР 23 11:12:00 по GMT+1 2018"в судо команды dpkg-перенастроить tzdata

Или напрямую с например, Google's время:

Реф.: https://superuser.com/a/635024/935136

Баш дата -с судо " и$(завиток -с-головой http://google.com | команда grep ^дата: | СЭД &#39;ы/дата: //Г&#39;) и" судо команды dpkg-перенастроить tzdata

Комментарии (1)

Недавно я столкнулся с этой проблемой, потому что из моей компании'фильтр веб-контента, что использует свой собственный центр сертификации, так что он может фильтровать трафик SSL. Типун не'т, кажется, используя систему'справок с Ca в моем случае, производя ошибки, которые вы упоминаете. Понижение типун до версии 1.2.1 представила свой собственный набор проблем в дальнейшем, поэтому я вернулась к первоначальному варианту, который пришел с Python 3.4.

Мое решение довольно простое: использовать в <код>easy_install</код>. Либо он не't проверяют сертификаты (как старый Пип-версия), или он знает, что нужно использовать систему сертификатов, потому что он работает каждый раз для меня, и я все еще можете использовать pip чтобы удалять пакеты, установленные с easy_install.

Если это не't работа, и вы можете получить доступ к сети или компьютеру, которые не'Т есть вопрос, вы всегда можете настроить свой собственный личный сервер PyPI: https://stackoverflow.com/questions/18052217/how-to-create-local-own-pypi-repository-index-without-mirror

Я почти сделал это, пока я не попробовал с использованием <код>easy_install в< код> В качестве последней отчаянной попытке.

Комментарии (1)

Вы можете попытаться обойти ошибку SSL, используя http вместо https. Конечно, это не оптимально с точки зрения безопасности, но если вы торопитесь, это должно помочь:

pip install --index-url=http://pypi.python.org/simple/ linkchecker
Комментарии (9)

Ответы на использование

pip install --trusted-host pypi.python.org 

работы. Но вы'll должны проверить, если есть редиректы или схрон Пип - это наезд. На Windows 7 с типун 9.0.1, мне пришлось бежать

pip install \
  --trusted-host pypi.python.org \
  --trusted-host pypi.org \
  --trusted-host files.pythonhosted.org \

Вы можете найти их подробное флаг.

Комментарии (0)

У вас есть 4 варианта:

Использовать сертификат в качестве параметра

$ pip install --cert /path/to/mycertificate.crt linkchecker

С использованием сертификата в ПГИ.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 в пункт.конф

Создать этот файл:

$HOME/.pip/pip.conf (Linux)

%HOME%\pip\pip.ini (Windows)

и добавить эти строки:

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

Источник

Комментарии (0)

Я установил pip и easy_install с 1.2.1 и обновить до последней версии Пип (6.0.7 на время), которая способна устанавливать пакеты в моем случае.

easy_install pip==1.2.1
pip install --upgrade pip
Комментарии (0)

Во-первых,

    pip install --trusted-host pypi.python.org 

не работает для меня. Я продолжал получать ошибку CERTIFICATE_VERIFY_FAILED. Однако, я заметил в сообщениях об ошибках, которые они ссылаются на 'pypi.орг' сайт. Так, я использовал это в качестве доверенного имени хоста вместо pypi.python.org. Что прикольщик; нагрузка до сих пор не с CERTIFICATE_VERIFY_FAILED, но на более позднем этапе. Найти ссылку на сайт, который был не в состоянии, я включил его в качестве надежного хозяина. Что в конечном счете работал для меня:

    pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org 
Комментарии (0)

Была та же проблема, что пункт Установить ftputil С по activepython 2.7.8, по activepython 3.4.1, и "запаса" на языке Python 3.4.2 на 64-разрядной Windows 7 корпоративная. Все попытки провалились с таким же ошибкам, как ОП.

Решал эту проблему для Python 3.4.2 на понижение до типуна 1.2.1: `easy_install и pip==1.2.1 (см. https://stackoverflow.com/a/16370731/234235). Же исправить и работал по activepython 2.7.8.

Ошибка, сообщил в марте 2013 года, остается открытым: https://github.com/pypa/pip/issues/829.

Комментарии (2)

Я'м не уверен, если это связано, но у меня была похожая проблема, которая была исправлена путем копирования этих файлов из Anaconda3/библиотека/bin в Anaconda3/DLL файлов :

libcrypto-1_1-x64.dll

libssl-1_1-x64.dll

Комментарии (1)

Ничего на этой странице работало на меня, пока я использовал опцию --verbose, чтобы увидеть, что он хотел добраться до files.pythonhosted.org а не pypi.python.org:

pip install --trusted-host files.pythonhosted.org 

Чтобы проверить URL-адрес, он'ов на самом деле не на через параметр --многословный.

Комментарии (0)

Я решил эту проблему, удалив свой pip и установив более старую версию pip: https://pypi.python.org/pypi/pip/1.2.1

Комментарии (5)