Установка 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.