В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.
При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.
Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».
Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this
. Возьмем этот пример:
public class Some {
private int id;
public int getId(){
return this.id;
}
public setId( int newId ) {
this.id = newId;
}
}
И в другом месте вашего кода:
Some reference = new Some(); // Point to a new object of type Some()
Some otherReference = null; // Initiallly this points to NULL
reference.setId( 1 ); // Execute setId method, now private var id is 1
System.out.println( reference.getId() ); // Prints 1 to the console
otherReference = reference // Now they both point to the only object.
reference = null; // "reference" now point to null.
// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );
// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...
Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference
и otherReference
оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.
Чтобы решить эту проблему раз и навсегда, вы можете убедиться, что у вас есть файл pip.conf
.
Здесь вам нужно pip.conf
, согласно документации :
В Unix файл конфигурации по умолчанию:
$HOME/.config/pip/pip.conf
, который уважает переменную среды XDG_CONFIG_HOME.В macOS файл конфигурации
$HOME/Library/Application Support/pip/pip.conf
.В Windows конфигурационный файл
%APPDATA%\pip\pip.ini
.Ваш
pip.conf
должен выглядеть так:[global] trusted-host = pypi.python.org
pip install linkchecker
установленlinkchecker
] без жалоб после создания файлаpip.conf
.
Недавно я столкнулся с той же проблемой в python 3.6 с визуальной студией 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
Чтобы перехватить проблему проверки ssl,
, это то, что я пробовал и работал. Я получал ошибку, когда пытался установить доступную версию, поэтому я помещал ее в имя пакета.
Это говорит, что pp доверяет хосту pypi.python.org, с которого мы загружаем и доверяем его нашему пакету.
pip install --trusted-host pypi.python.org ansible
pip install --trusted-host pypi.python.org --upprade pip
BLOCKQUOTE>
Вы можете попытаться обойти ошибку SSL, используя http вместо https. Конечно, это не оптимально с точки зрения безопасности, но если вы торопитесь, он должен сделать трюк:
pip install --index-url=http://pypi.python.org/simple/ linkchecker
Could not fetch URL http://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
– Jeremy Cook
3 October 2014 в 16:00
Самый простой способ, который я нашел, - загрузить и использовать «DigiCert High Assurance EV Root CA» из DigiCert по адресу https://www.digicert.com/digicert-root-certificates.htm# root
Вы можете посетить https://pypi.python.org/ , чтобы проверить выпуск сертификата, щелкнув значок блокировки в адресной строке или увеличив ваш geek cred с помощью 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 в цепочке сертификатов - это имя ЦС, которое вам нужно загрузить.
Для одноразового усилия , выполните следующие действия:
(последняя строка предполагает, что вы используете оболочку 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.
Произошла такая же проблема, как попытка pip install ftputil
с помощью ActivePython 2.7.8, ActivePython 3.4.1 и «запаса» Python 3.4.2 на 64-разрядной Windows 7 Enterprise. Все попытки потерпели неудачу с теми же ошибками, что и OP.
Работала над проблемой для Python 3.4.2 путем понижения до pip 1.2.1: easy_install pip==1.2.1
(см. https://stackoverflow.com/ а / 16370731/234235 ). Это же исправление также работало для ActivePython 2.7.8.
Ошибка, о которой сообщалось в марте 2013 года, по-прежнему открыта: https://github.com/pypa/pip/issues/829 .
pip list --trusted-host pypi.python.org --outdated
– Igor
17 August 2017 в 15:50
pip
использовать его с --cert MyCompanyRootCA.crt
.
– glibdud
30 April 2018 в 18:29
Ничто на этой странице не работало для меня, пока я не использовал параметр --verbose, чтобы увидеть, что он хочет получить файлы .pythonhosted.org, а не pypi.python.org:
pip install --trusted-host files.pythonhosted.org <package_name>
So проверьте URL-адрес, на который он фактически не работает, с помощью опции --verbose.
В моем случае я заметил, что ошибка при попытке установить соответствующий пакет. В моем случае python-heatclient требовал позиционного, что требовало pbr. Установка pbr не удалась. Когда я установил pbr явно перед установкой python-heatclient, он работал, как ожидалось.
Вызвать это не удалось venv/bin/pip install python-heatclient
Вызовы, которые преуспели
venv/bin/pip install pbr
venv/bin/pip install python-heatclient
Ответы очень похожи и немного запутанны. В моем случае сертификаты в сети моей компании были проблемой. Я смог решить проблему, используя:
pip install --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org oauthlib -vvv
Как видно здесь . Аргумент -vvv может быть опущен, если не требуется подробный вывод
Vaulstein помог мне.
Я не нашел файл pip.ini в любом месте своего компьютера. Так было и следующее.
Или просто введите% AppData% в проводник Виндоус.
Файл pip.ini:
[list]
format=columns
[global]
trusted-host = pypi.python.org pypi.org
Теперь вам будет хорошо идти.
У вас есть следующие возможности для решения проблемы с CERTIFICATE_VERIFY_FAILED
:
--cert <trusted.pem>
или CA_BUNDLE
для укажите альтернативный комплект СА. Например. вы можете перейти к неудачному URL из веб-браузера и импортировать корневой сертификат в свою систему. python -c "import ssl; print(ssl.get_default_verify_paths())"
, чтобы проверить текущий (проверьте, существует ли). SSL_CERT_DIR
, SSL_CERT_FILE
), которые могут использоваться для указания другой базы данных сертификатов PEP-476 . --trusted-host <hostname>
, чтобы отметить хост как доверенный. verify=False
для requests.get
(см. Проверка сертификата SSL ). --proxy <proxy>
, чтобы избежать проверки сертификатов. Подробнее: Обертка TLS / SSL для объектов сокетов - Проверка сертификатов .
Вы можете попробовать это, чтобы игнорировать «https»:
pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org [your package..]
pip install --trusted-host pypi.python.org --upgrade pip –
– Smaillns
9 August 2017 в 04:53
В моем случае я запускал Python в минимальном изображении альпийского докера. В нем отсутствовали корневые сертификаты CA. Fix:
apk update && apk add ca-certificates
Для меня ни один из предложенных методов не работал - с использованием cert, HTTP, trusted-host.
В моем случае переключение на другую версию обработанного пакета (paho-mqtt 1.3.1 вместо paho -mqtt 1.3.0 в этом случае).
Похоже, проблема была конкретной для этой версии пакета.
Прежде всего,
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>
Ответы на использование
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>
. Вы можете найти их с помощью подробного флага.
У вас может возникнуть эта проблема, если в вашем системном коде отсутствуют какие-либо сертификаты. opensuse install ca-certificates-mozilla
На данный момент, когда pip обновлен до 10, и теперь они изменили свой путь с pypi.python.org на files.pythonhosted.org. Обновите команду на pip --trusted-host files.pythonhosted.org install python_package
Одним из решений ( для 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
Надеюсь, это поможет кому-то!
pip install --trusted-host pypi.python.org pypi_package
. Использование --verbose
показывает, что без --trusted-host
соединение HTTPS завершается с ошибкой, тогда как одно и то же HTTPS-соединение пытается (а не HTTP) с --trusted-host
, но оно преуспевает.
– Oliver
22 December 2015 в 20:18
pip install --trusted-host pypi.python.org pythonPackage
– Alter Hu
23 August 2016 в 04:43
Вы можете указать cert с этим параметром:
pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker
См.: Документы »Справочное руководство» pip
При указании корневого сертификата вашей компании не работает, возможно, cURL будет работать: http://curl.haxx.se/ca/cacert.pem
Вы должны использовать файл PEM, а не CRT файл. Если у вас есть файл CRT, вам нужно будет преобразовать файл в PEM
. Также проверьте: Проверка сертификата SSL .
pip.conf
, на который они ссылаются постоянно, без указания команда
– Cinderhaze
24 April 2018 в 13:30
Я установил pip 1.2.1 с easy_install и обновил до последней версии pip (6.0.7 в то время), которая в состоянии установить пакеты в моем случае.
easy_install pip==1.2.1
pip install --upgrade pip
для меня это потому, что раньше я запускал скрипт, который устанавливал прокси (для скрипача), снова открывал консоль или перезагружал исправление проблемы.
Я решил эту проблему, удалив мой пип и установив более старую версию pip: https://pypi.python.org/pypi/pip/1.2.1
include the essential parts of the answer here
, поскольку это ссылка на двоичный файл i> ...?
– Thomas Ayoub
26 August 2016 в 09:33