"연결 오류 : [SSL : CERTIFICATE_VERIFY_FAILED] 인증서 확인 실패 (_ssl.c : 598)"와 함께 pip 설치가 실패합니다.
저는 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 인증서를 확인하지 않기 때문일 수 있습니다.- 나는 회사 네트워크에 있지만 인터넷에 연결하기 위해 프록시를 거치지 않습니다.
- 각 회사 컴퓨터 (내 컴퓨터 포함)에는 https://google.com으로의 TLS 트래픽 모니터링을 활성화하는 등 여러 가지 이유로 사용되는 신뢰할 수있는 루트 인증 기관이 있습니다 . 그것이 그와 관련이 있는지 확실하지 않습니다.
다음은 실행 후 내 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
신뢰할 수있는 호스트로 설정 pypi.org
하여 SSL 오류를 무시할 수 있습니다 files.pythonhosted.org
.
$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org <package_name>
참고 : 2018 년 4 월에 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>
. 일부 패키지는 발견되지 않거나 작은 오류가 발생합니다. - 휠 사용 : python 패키지 의 휠을 다운로드하고 pip 명령
pip install wheel_package_name.whl
을 사용하여 패키지를 설치하십시오.
이 매개 변수를 사용하여 인증서를 지정할 수 있습니다.
pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker
참조 : 문서»참조 안내서»pip
회사의 루트 인증서를 지정해도 작동하지 않으면 cURL이 작동 할 수 있습니다. http://curl.haxx.se/ca/cacert.pem
CRT 파일이 아닌 PEM 파일을 사용해야합니다. CRT 파일이있는 경우 파일을 PEM 으로 변환 해야 합니다. 주석에이 파일이 CRT 파일과 함께 작동하지만 확인되지 않은 보고서가 있습니다.
또한 확인 : SSL CERT는 검증 .
kenorb의 답변 은 매우 유용합니다 (그리고 훌륭합니다!).
그의 솔루션 중 가장 간단한 방법 일 수 있습니다.--trusted-host
예를 들어이 경우에는
pip install --trusted-host pypi.python.org linkchecker
pem 파일 (또는 다른 것)은 필요하지 않습니다.
대답은 상당히 비슷하고 약간 혼란 스럽습니다. 필자의 경우 회사 네트워크의 인증서가 문제였습니다. 다음을 사용하여 문제를 해결할 수있었습니다.
pip install --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org oauthlib -vvv
여기에서 볼 수 있듯이 . 자세한 출력이 필요하지 않은 경우 -vvv 인수를 생략 할 수 있습니다.
나를 위해 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
파이썬을 다시 시작한 다음 pip는 이러한 사이트를 영구적으로 신뢰하고 패키지를 다운로드하는 데 사용했습니다.
내가 찾은 가장 간단한 방법은 DigiCert ( https://www.digicert.com/digicert-root-certificates.htm#roots) 에서 "DigiCert High Assurance EV Root CA"를 다운로드하여 사용하는 것입니다.
주소 표시 줄에서 잠금 아이콘을 클릭하여 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의 이름입니다.
일회성 노력으로 다음을 수행하십시오.
- DigiCert 에서 CRT 다운로드
- CRT를 PEM 형식으로 변환
- PIP_CERT 환경 변수를 PEM 파일의 경로로 내 보냅니다.
pip를 실행하기 전에 (마지막 줄은 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.crt를 일반적인 곳에 놓고 ~ / .bashrc에 PIP_CERT를 적절히 내보내십시오.
이 문제를 한 번에 해결하기 위해 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 내부에서 :
유닉스와 맥 OS에서 파일은
$VIRTUAL_ENV/pip.conf
Windows에서 파일은 다음과 같습니다.
%VIRTUAL_ENV%\pip.ini
당신 pip.conf
은 다음과 같아야합니다 :
[global]
trusted-host = pypi.python.org
pip install linkchecker
파일을 linkchecker
만든 후 불평없이 설치 pip.conf
됩니다.
영구 수정
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
문제를 해결하기 위해 다음과 같은 가능성이 있습니다 CERTIFICATE_VERIFY_FAILED
.
- HTTPS 대신 HTTP를 사용하십시오.
대체 CA 번들을 지정 하려면
--cert <trusted.pem>
또는CA_BUNDLE
변수를 사용하십시오 .예를 들어 웹 브라우저에서 실패한 URL로 이동하여 루트 인증서를 시스템으로 가져올 수 있습니다.
python -c "import ssl; print(ssl.get_default_verify_paths())"
현재 항목을 확인하기 위해 실행 합니다 (있는 경우 확인).- OpenSSL을이 환경 쌍 (
SSL_CERT_DIR
,SSL_CERT_FILE
) 다른 인증서 데이터베이스 지정하는 데 사용할 수있는 PEP-476 . --trusted-host <hostname>
호스트를 신뢰할 수있는 것으로 표시하는 데 사용하십시오 .- 파이썬 사용에
verify=False
대한requests.get
(참조 : SSL CERT는 검증 ). --proxy <proxy>
인증서 확인을 피하기 위해 사용 합니다.
: 더 많은 읽기 소켓 개체에 대한 TLS / SSL 래퍼 - 확인 인증서를 .
시간과 날짜를 올바르게 설정하십시오!
나를 위해, 내 날짜와 시간이 Raspberry Pi에서 잘못 구성되어 나왔습니다. 그 결과 https://files.pythonhosted.org/ 서버를 사용하여 모든 SSL 및 HTTPS 연결에 실패했습니다 .
다음과 같이 업데이트하십시오.
sudo date -s "Wed Thu 23 11:12:00 GMT+1 2018"
sudo dpkg-reconfigure tzdata
또는 구글의 시간과 같이 직접 :
참조 : 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
SSL 인증을 필터링 할 수 있도록 자체 인증 기관을 사용하는 회사의 웹 컨텐츠 필터로 인해 최근이 문제가 발생했습니다. 내 경우에는 PIP가 시스템의 CA 인증서를 사용하지 않는 것 같으며 언급 한 오류가 발생합니다. PIP를 버전 1.2.1로 다운 그레이드하면 나중에 고유 한 문제가 발생하므로 Python 3.4와 함께 제공된 원래 버전으로 돌아갔습니다.
내 해결 방법은 매우 간단합니다 : use easy_install
. 이전 PIP 버전과 같은 인증서를 확인하지 않거나 매번 작동하므로 시스템 인증서를 사용하는 것을 알고 있으며 여전히 PIP를 사용하여 easy_install로 설치된 패키지를 제거 할 수 있습니다.
그래도 문제가 해결되지 않고 문제가없는 네트워크 나 컴퓨터에 액세스 할 수 있다면 언제든지 개인 PyPI 서버를 설정할 수 있습니다. 미러없이 로컬 자체 pypi 리포지토리 인덱스를 만드는 방법은 무엇입니까?
나는 easy_install
마지막 도랑 노력으로 사용하려고 할 때까지 거의 그랬습니다 .
https 대신 http를 사용하여 SSL 오류를 무시할 수 있습니다. 물론 이것은 보안 측면에서 최적 은 아니지만 서두르면 트릭을 수행해야합니다.
pip install --index-url=http://pypi.python.org/simple/ linkchecker
사용하는 답변
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>
verbose 플래그를 사용하여 찾을 수 있습니다.
easy_install과 함께 pip 1.2.1을 설치하고 필자의 경우 패키지를 설치할 수있는 최신 버전의 pip (당시 6.0.7)로 업그레이드했습니다.
easy_install pip==1.2.1
pip install --upgrade pip
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
인증서 무시 및 pip.conf에서 HTTP 사용
이 파일을 작성하십시오.
$HOME/.pip/pip.conf (Linux)
%HOME%\pip\pip.ini (Windows)
다음 줄을 추가하십시오.
[global]
trusted-host = pypi.python.org
출처
가장 먼저,
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 ftputil
64 비트 Windows 7 Enterprise에서 ActivePython 2.7.8, ActivePython 3.4.1 및 "주식"Python 3.4.2와 동일한 문제가 발생했습니다 . OP와 동일한 오류로 모든 시도가 실패했습니다.
pip 1.2.1로 다운 그레이드하여 Python 3.4.2의 문제를 해결했습니다 easy_install pip==1.2.1
( https://stackoverflow.com/a/16370731/234235 참조 ). ActivePython 2.7.8에서도 동일한 수정 사항이 적용되었습니다.
2013 년 3 월보고 된 버그는 여전히 열려 : https://github.com/pypa/pip/issues/829 .
이것이 관련되어 있는지 확실하지 않지만 다음 파일을 Anaconda3 / Library / bin에서 Anaconda3 / DLLs로 복사하여 수정 된 비슷한 문제가 있습니다.
libcrypto-1_1-x64.dll
libssl-1_1-x64.dll
--verbose 옵션을 사용하여 pypi.python.org가 아닌 files.pythonhosted.org에 도착하기를 원할 때까지이 페이지의 어떤 것도 효과가 없었습니다.
pip install --trusted-host files.pythonhosted.org <package_name>
따라서 실제로 --verbose 옵션을 통해 실패한 URL을 확인하십시오.
내 pip를 제거하고 이전 버전의 pip를 설치 하여이 문제를 해결했습니다 : https://pypi.python.org/pypi/pip/1.2.1
"https"를 무시하기 위해 이것을 시도 할 수 있습니다.
pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org [your package..]
제 경우에는 회사의 내부 CA가 SSL 인증서에 서명했기 때문입니다. 같은 해결 방법을 사용하면 pip --cert
도움이되지 않지만 다음 패키지는 도움이되었습니다.
pip install pip_system_certs
참조 : https://pypi.org/project/pip-system-certs/
이 패키지는 pip를 패치하고 런타임시 기본 시스템 저장소 (번들 된 인증서 ca 대신)의 인증서를 사용하도록 요청합니다.
이를 통해 pip는 시스템 설치에서 인증서를 신뢰하는 서버에 대한 tls / ssl 연결을 확인할 수 있습니다.
나를 위해 이것은 이전에 프록시 (피들러로)를 설정하거나 콘솔을 다시 열거 나 재부팅하여 문제를 해결하는 스크립트를 실행하기 때문입니다.
최근에 나는 Visual Studio 2015와 함께 Python 3.6에서 같은 문제에 직면했습니다. 2 일을 보낸 후에 솔루션과 솔루션이 제대로 작동했습니다.
pip를 사용하거나 Visual Studio에서 numpy를 설치하려고 할 때 오류가 발생했습니다. numpy를 수집하면 URL을 가져올 수 없습니다 https://pypi.python.org/simple/numpy/ : SSL 인증서를 확인하는 데 문제가 있습니다. [SSL : CERTIFICATE_VERIFY_FAILED] 인증서 확인 실패 (_ssl.c : 748)-건너 뛰기 요구 사항 numpy (버전에서)를 만족하는 버전을 찾을 수 없습니다. numpy에 대해 일치하는 배포가 없습니다.
해결 :
Windows OS의 경우
- open-> "% appdata %" "pip"폴더가 없으면 작성하십시오.
- pip 폴더에 "pip.ini"파일을 작성하십시오.
- 파일을 편집하고
[global]
trusted-host = pypi.python.org를 작성하십시오. 파일을 저장하고 닫으십시오. 이제 pip / visual studio를 사용하여 설치하면 정상적으로 작동합니다.
Vaulstein의 답변이 도움이되었습니다.
내 PC에서 pip.ini 파일을 찾지 못했습니다. 다음도 마찬가지였습니다.
- AppData 폴더로 이동했습니다. 명령 프롬프트를 열고 echo % AppData %를 입력하여 appdata 폴더를 얻을 수 있습니다.
또는 단순히 Windows 탐색기에서 % AppData %를 입력하십시오.
해당 appdata 폴더 안에 pip라는 폴더를 만듭니다.
방금 만든 pip 폴더에서 pip.ini라는 간단한 텍스트 파일을 만듭니다.
선택한 간단한 편집기를 사용하여 해당 파일에 다음 구성 설정을 붙여 넣습니다.
pip.ini 파일 :
[list]
format=columns
[global]
trusted-host = pypi.python.org pypi.org
이제 잘 가야합니다.
(하나 개의 솔루션 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) python 2.7 제거 2) python27 폴더 삭제 3) 최신 python 재설치
나를 위해 cert, HTTP, trusted-host를 사용하여 제안 된 방법 중 어느 것도 효과가 없었습니다.
필자의 경우 다른 버전의 패키지로 전환했습니다 (이 경우 paho-mqtt 1.3.0 대신 paho-mqtt 1.3.1).
문제가 해당 패키지 버전에만 해당되는 것 같습니다.
필자의 경우 최소 알파인 도커 이미지에서 Python을 실행 중이었습니다. 루트 CA 인증서가 누락되었습니다. 고치다:
apk update && apk add ca-certificates
시스템에 일부 인증서가없는 경우이 문제가 발생할 수 있습니다 (예 : opensuse install ca-certificates-mozilla).
'Programing' 카테고리의 다른 글
클래스별로 요소를 찾는 방법 (0) | 2020.03.03 |
---|---|
getResources (). getColor ()는 더 이상 사용되지 않습니다 (0) | 2020.03.03 |
bash : pip : 명령을 찾을 수 없습니다 (0) | 2020.03.03 |
파이썬과 리턴 매치에서 두 목록을 비교하는 방법 (0) | 2020.03.03 |
Mac OSX Yosemite에서 Ruby 버전 2.0.0을 최신 버전으로 업데이트하는 방법은 무엇입니까? (0) | 2020.03.03 |