Установка pip завершается с ошибкой «Ошибка подключения: сертификат [SSL: CERTIFICATE_VERIFY_FAILED] не выполнен (_ssl.c: 598)»


398

Я очень новичок в 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

1
Наоборот! Python 3.4.1 и более ранние версии не выполняют проверку сертификата по умолчанию. Если бы вы использовали Python 3.4.2, я бы подумал, что это проблема. (См. Выпуск 21013 и эту ветку в списке рассылки . Обратите внимание, что это начало довольно длинной цепочки.) Извините, я не мог помочь!
Коди Пирсолл,

3
Проверьте, открыли ли вы фидлер, и закройте его. Fiddler попытается разорвать SSL, и это нарушит пипс, когда я закрою фидлер пипс, у меня работает. Когда я закрываю свою скрипач, все идет хорошо
Хосе Барбоза

Ответы:


643

-----> pip install gensim config --global http.sslVerify false

Просто установите любой пакет с помощью инструкции «config --global http.sslVerify false»

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

7
Твое обновление заставило меня задуматься. В моем случае корпоративный брандмауэр вставляет себя в качестве доверенного хоста для соединений SSL. Я предполагал, что настройка прокси была неправильной, но добавление подробного показало, что проблема была SSL Изменение индекса URL обошло проблему.
Peater

11
Круто, спасибо! Доверенного хоста, кажется, достаточно, т.е. pip install --trusted-host pypi.python.org pypi_package, Использование --verboseпоказывает, что без --trusted-hostHTTPS-соединения происходит сбой, в то время как попытка того же HTTPS-соединения (но не HTTP) выполняется, --trusted-hostно успешно.
Оливер

12
Разве использование версии HTTP (а затем даже доверие к ней) не является угрозой безопасности?
Пауло Эберманн

3
Вы можете сделать это коротким, чтобы игнорировать параметр --index-url, попробуйте эту команду также должно быть в порядке:pip install --trusted-host pypi.python.org pythonPackage
Alter Hu

8
у меня не работает. Запуск mac os high sierra на macbookpro 15 "Python 2.7 pip 9.0.1 Я попробовал оба: sudo -H pip установить --trusted-host pypi.python.org numpy и sudo pip установить --trusted-host pypi.python.org numpy всегда выдает мне ту же ошибку: «При подтверждении сертификата ssl возникла проблема: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] версия протокола оповещения tlsv1 (_ssl.c: 661) - пропуск Не удалось найти версию, удовлетворяющую требованию»
DaniPaniz

123

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

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 сертификата .


1
Керл один безопасен. Я бы предложил использовать это.
Стив Таубер

1
@JeremyCook это может быть время на вашем сервере, если это в прошлом, это может быть процесс проверки
Джованни Битлинер

1
Формат CRT не поддерживается, только формат PEM. Вам нужно будет конвертировать CRT в формат PEM, используя openssl. Вы также должны убедиться, что загруженный пакет содержит правильный корневой CA. Пожалуйста, смотрите мой ответ выше для деталей: stackoverflow.com/a/28724886/41957 .
chnrxn

1
@JeremyCook, сертификаты PEM / не были получены непосредственно от третьей стороны, с которой вы их загрузили. Они собрали сертификаты из первоисточников. Стороннее лицо не может сгенерировать сертификат кого-либо еще, если у него нет правильного ключа (который будет иметь только кто-то другой).
chnrxn

4
@endolith - Глядя на pip.pypa.io/en/stable/user_guide/#configuration, похоже, что вы можете либо использовать переменные окружения, либо pip.confфайл, чтобы на них можно было постоянно ссылаться без указания в команде
Cinderhaze

63

Ответ Кенорба очень полезен (и великолепен!).
Среди его решений, возможно, это самое простое: --trusted-host

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

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

Файл pem (или что-то еще) не нужен.


Это также работает для других команд, таких какpip list --trusted-host pypi.python.org --outdated
Игорь

61

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


Странно, но это не помогает на моей машине с Win10: /
mcandre

1
На работе среда Windows 10, использующая консольный эмулятор Cmder. --trusted-host используется для решения проблемы «'SSLError (SSLCertVerificationError (1,' [SSL: CERTIFICATE_VERIFY_FAILED]] не удалось проверить: самозаверяющий сертификат в цепочке сертификатов". Сегодня он перестал работать. Я поместил копию папки pip ( взято из ../AppData/Local/) в ../AppData/Roaming/ и все в порядке с моим локальным миром питонов. Большое спасибо!
IdusOrtus

1
Большой! Большое спасибо. --trusted-host не работает для меня сейчас, но ваше решение помогает.
Александр Прокофьев

1
Почему это не было загружено при установке Python>
98Ed

Потрясающие! Я искал ошибки, связанные с GIT, прокси-сервером компании, SSL, и это было просто связано с пипсами. Спасибо, и я надеюсь, что этот комментарий привел сюда таких людей, как я.
Негас

41

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

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

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


10
Только один, чтобы исправить мою проблему, спасибо.
Гринго Суаве

Удивительно, единственный, который работал на меня, а также!
ethikz

Работает, потому что сегодня я за каким-то прокси, который удаляет обычный SSL. Мне обычно не нужно указывать доверенные хосты, когда взрослые запускают сеть.
MrChrister

это работает для меня тоже. выше не сработало
Сринат Ганеш

32

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

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

24

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


1
$ HOME / Библиотека / Поддержка приложений / pip не существует на моем компьютере, есть альтернативное местоположение?
42shadow42

Похоже, что руководство pipпользователя было обновлено с тех пор, как я опубликовал этот ответ. Я обновил свой ответ для macOS. Это помогает?
Алекс-Антуан Фортин

Не влияет ошибка SSL на моем компьютере с Win10: /
mcandre

Не решает проблему на MacOSX.
МЮ

Я на MacOS. Если вы установили Python3 с помощью, brewубедитесь, что вы используете, pip3и создайте pip.confкак $HOME/.config/pip/pip.conf. Я работал на меня.
ана

23

Самый простой способ, который я нашел, это загрузить и использовать «DigiCert High Assurance EV Root CA» от 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 в цепочке сертификатов - это имя CA, которое вам нужно загрузить.

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

  1. Загрузите ЭЛТ от DigiCert
  2. Конвертировать CRT в формат PEM
  3. Экспортируйте переменную среды 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.


4
Используйте ваш ответ, чтобы экспортировать корневой CA нашей компании в переменную PIP_CERT и, наконец, после того, как все остальное, включая «pip --cert cert.pem», поработали ... просто установите пакет pip install. BIG +1 - да, у нас есть firewal / proxy / utm.
Марлон

Это все еще не удалось для меня на Mac Mojave. Я выполнил ровно 3 шага, и все равно получаю сообщение «Ошибка: pip настроен в местах, где требуется TLS / SSL, однако модуль ssl в Python недоступен». Я перепробовал все опции --trusted-host и --cert, и pip работать не будет. Я попытался обновить pip и получил ошибку SSL. Я установил pip с нуля с помощью curl, и все же я получаю сообщение об ошибке при запуске pip. Время
угробить

21

У вас есть следующие возможности для решения проблемы CERTIFICATE_VERIFY_FAILED:

  • Используйте HTTP вместо HTTPS (например --index-url=http://pypi.python.org/simple/).
  • Используйте --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 Cert Verification ).
  • Используйте, --proxy <proxy>чтобы избежать проверки сертификатов.

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


С вашей первой точки зрения, как мне указать HTTP с помощью команды pip?
Райзинц

1
@rayzinnz Я добавил пример.
Кенорб

16

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

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

Обновите это так:

sudo date -s "Wed Thu  23 11:12:00 GMT+1 2018"
sudo dpkg-reconfigure tzdata

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

Ссылка: https://superuser.com/a/635024/935136

sudo date -s "$(curl -s --head http://google.com | grep ^Date: | sed 's/Date: //g')"
sudo dpkg-reconfigure tzdata

Несколько часов сводил меня с ума - спасибо за это. Время PI было отключено на 10 дней для меня, что вызвало (казалось бы) все виды ошибок во время установки pip.
SteveJ

13

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

Мой обходной путь довольно прост: используйте easy_install. Либо он не проверяет сертификаты (например, старую версию PIP), либо знает, как использовать системные сертификаты, потому что он работает каждый раз для меня, и я все еще могу использовать PIP для удаления пакетов, установленных с easy_install.

Если это не сработает, и вы можете получить доступ к сети или компьютеру, у которых нет этой проблемы, вы всегда можете настроить собственный персональный сервер PyPI: как создать локальный собственный индекс хранилища pypi без зеркала?

Я почти делал это, пока не попытался использовать easy_installв качестве последнего рывка.


Та же проблема здесь. Другим обходным решением является экспорт корневого сертификата компании в виде файла и указание pipиспользовать его --cert MyCompanyRootCA.crt.
glibdud

10

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

pip install --index-url=http://pypi.python.org/simple/ linkchecker

1
Я ожидал, что ваше предложение сработает. Сумасшедший я получил точно такие же ошибки, включая первуюCould not fetch URL http://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
Джереми Кук

3
Итак, еще один обходной путь - скачать пакет tar.gz, доступный здесь pypi.python.org/pypi/LinkChecker/9.3, и установить его с помощью: pip install LinkChecker-9.3.tar.gz
Augusto Destrero

3
Но если пакет, который вы хотите установить, имеет зависимости, вы должны загрузить и установить также все зависимости, если их много, это может стать кошмаром.
Аугусто Дестреро

1
Для меня я должен был загрузить whl (для моего случая pyserial) и установить его. Это подняло зависимости, которые не были собраны tar.gz ... Так что, может быть, whl - это еще один вариант в духе @baxeico python -m pip install pyserial-3.4-py2.py3-none-any.whl Для меня ничего из этого не работало: 1. --cert cacert.pem 2. экспорт сертификата компании, преобразование в PEM 3. easy_install в cygwin 4. --trusted-host
charo

1
Теперь longs работает с 2017 года - HTTP-доступ полностью отключен. mail.python.org/pipermail/distutils-sig/2017-October/…
gbtimmon

8

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

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>

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


7

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

easy_install pip==1.2.1
pip install --upgrade pip

7

У вас есть 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

Источник


6

Прежде всего,

    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>

5

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

libcrypto-1_1-x64.dll

libssl-1_1-x64.dll


С помощью Anaconda 2019.03 я скопировал следующие файлы из <папки Anaconda3> / Library / bin в <Anaconda3> / DLLs libcrypto-1_1-x64.dll libcrypto-1_1-x64.pdb libssh2.dll libssl-1_1-x64.dll libssl- 1_1-x64.pdb Затем я добавляю ошибку ConnectTimeout, поэтому обновил конфигурацию прокси .condarc
MordicusEtCubitus

Работает. Человек ты гений! Я бродил по форумам 1,5 часа, просто чтобы найти это недооцененное и простое решение.
ivan866

4

Была такая же проблема при попытке pip install ftputilс ActivePython 2.7.8, ActivePython 3.4.1 и «стандартным» Python 3.4.2 на 64-битной Windows 7 Enterprise. Все попытки провалились с теми же ошибками, что и OP

Обошли проблему для 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 .


Это сработало и для меня. Хотя вначале может показаться плохой идеей перейти на более старую версию pip, я имел дело со старыми пакетами django, поэтому старая версия pip фактически совпадала с другими пакетами.
mknaf

Выпуск 829 сейчас закрыт.
Ортомала Локни

3

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

pip install --trusted-host files.pythonhosted.org <package_name>

Поэтому проверьте URL-адрес, на котором он действительно не работает, с помощью параметра --verbose.


2

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


Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными в случае изменения связанной страницы. - Из Обзора
Апомена

@apomene как OP должен, include the essential parts of the answer hereтак как это ссылка на двоичный файл ...?
Томас Аюб

@ThomasAyoub, я полагаю, вы уже знаете, что вышеупомянутое сообщение автоматически заполняется SO, когда помечается ответ как единственный ответ на ссылку
apomene

@apomene, который не отвечает на мой вопрос, я все еще не вижу, что ОП мог бы / должен добавить?
Томас Аюб

1
@ThomasAyoub, Чтобы уточнить, мой комментарий (SO) указывает на то, что вопрос является коротким и содержит только ссылку, то есть это может быть лучше комментарий. Мое намерение состояло не в том, чтобы явно указать, что OP должен добавить детали, обновляющие ссылку, а в подробностях, почему это отвечает на вопрос.
apomene

2

Вы можете попробовать это, чтобы игнорировать "https":

pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org  [your package..]

1
если у вас есть другие проблемы с версией pip, вы можете попробовать это pip install --trusted-host pypi.python.org --upgrade pip –
Smaillns

2

Одно решение ( для 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

Надеюсь, это поможет кому-то!


1
Что касается других ОС, взгляните на ответ Алекса-Антуана Фортина
Dinei

Не нужен прокси, только сертификат. Я побежал; pip3.6 config set global.cert '/<path>/server.crt'
avatarofhope2

2

В моем случае это было связано с тем, что SSL-сертификат был подписан внутренним центром сертификации моей компании. Использование обходных путей вроде pip --certне помогло, но сделал следующий пакет:

pip install pip_system_certs

Смотрите: https://pypi.org/project/pip-system-certs/

Этот пакет исправляет pip и запрашивает во время выполнения использование сертификатов из системного хранилища по умолчанию (а не связанных сертификатов ca).

Это позволит pip проверять соединения tls / ssl с серверами, чей сертификат является доверенным при установке вашей системы.


1
Кажется, необходимо установить pip_sysem_certs, чтобы аннулировать ошибку [SSL: CERTIFICATE_VERIFY_FAILED], проблема в том, что при попытке установить ее
возникла

Возможно, в какой-то момент это могло быть решением, но pip_system_certsполностью разрушило мою среду Python, и по этой причине это не очень хороший ответ. Не устанавливайте pip_system_certs. См. Stackoverflow.com/questions/27835619/… для получения дополнительной информации.
h0r53

1

для меня это потому, что ранее я запускаю скрипт, который устанавливает прокси (на fiddler), открывает консоль заново или перезагружает, чтобы решить проблему.


Fiddler можно обойти, установив «Расшифровать трафик HTTPS» на «... только из браузеров» в меню «Сервис | Параметры». Это исправило проблему для меня.
Тефир

1

Недавно я столкнулся с той же проблемой в Python 3.6 с Visual Studio 2015. Потратив 2 дня, я получил решение, и оно отлично работает для меня.

Я получил ошибку ниже при попытке установить NumPy с помощью pip или из Visual Studio. Сбор NumPy Не удалось получить URL https://pypi.python.org/simple/numpy/ : При подтверждении сертификата ssl возникла проблема: [SSL: CERTIFICATE_VERIFY_FAILED] проверка сертификата не удалась (_ssl.c: 748) - пропуск Не удалось найти версию, которая удовлетворяет требованию numpy (из версии:) Не найдено соответствующего распределения для numpy

Разрешение :

Для ОС Windows

  1. open -> "% appdata%" Создать папку "pip", если она не существует.
  2. В папке pip создайте файл "pip.ini".
  3. Отредактируйте файл и напишите
    [global]
    trust-host = pypi.python.org Сохраните и закройте файл. Теперь установите с помощью pip / visual studio, все работает нормально.

1

В моем случае я использовал Python в минимальном альпийском образе докера. Отсутствовали сертификаты корневого ЦС. Fix:

apk update && apk add ca-certificates


1

Ответ Вольштейна помог мне.

Я не нашел файл pip.ini на моем компьютере. Так и сделал следующее.

  1. Пошел в папку AppData. Вы можете получить папку appdata, открыв командную строку и набрав echo% AppData%

Расположение AppData с использованием командной строки

Или просто введите% AppData% в проводнике Windows.

Расположение AppData в проводнике Windows

  1. Создайте папку с именем pip внутри этой папки appdata.

  2. В той папке pip, которую вы только что создали, создайте простой текстовый файл с именем pip.ini

  3. Вставьте следующие параметры конфигурации в этот файл, используя простой редактор на ваш выбор.

Файл pip.ini:

[list]
format=columns

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

Теперь тебе нужно идти.


1

Я столкнулся с подобной проблемой. Решение, которое работает для меня 1) удалить Python 2.7 2) удалить папку Python27 3) переустановить последний Python


0

Для меня ни один из предложенных методов не сработал - используя cert, HTTP, trust-host.

В моем случае переключение на другую версию пакета работало (paho-mqtt 1.3.1 вместо paho-mqtt 1.3.0 в данном случае).

Похоже, проблема была специфична для этой версии пакета.


0

Вы можете столкнуться с этой проблемой, если в вашем system.eg отсутствуют некоторые сертификаты на opensuse install ca-certificate-mozilla

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.