pip
SSL 오류가 발생 하여를 사용하여 Python 라이브러리를 설치하려고합니다 .
~/projects/base pre-master± pip install xdict
Collecting xdict
Could not fetch URL https://pypi.python.org/simple/xdict/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) - skipping
Could not find a version that satisfies the requirement xdict (from versions: )
No matching distribution found for xdict
핍 버전 : pip 9.0.1
이 오류를 어떻게 해결합니까?
답변
다음과 같이 핍을 업그레이드하십시오.
curl https://bootstrap.pypa.io/get-pip.py | python
참고 : sudo python
가상 환경이 아닌 경우 위 를 사용해야 할 수도 있습니다.
( 즉, 을 pip
사용하여 업그레이드해도 제대로 업그레이드되지는 않습니다. 이는 닭과 계란 문제 일뿐입니다. TLS> = 1.2를 사용하지 않으면 작동하지 않습니다.)pip
pip install --upgrade pip
pip
이 자세한 답변 에서 언급했듯이 최근 pip에 대한 TLS 지원 중단으로 인한 것입니다. Python.org 사이트는 TLS 버전 1.0 및 1.1에 대한 지원 을 중단했습니다 .
Python 상태 페이지에서 :
완료 -롤링 브라운 아웃이 완료되었으며 TLSv1.0 및 TLSv1.1이 비활성화되었습니다. 4 월 11 일 15:37 UTC
PyCharm (virtualenv) 사용자의 경우 :
-
쉘로 가상 환경을 실행하십시오. ( “./venv/bin/activate”를 자신의 경로로 바꾸십시오)
source ./venv/bin/activate
-
업그레이드 실행
curl https://bootstrap.pypa.io/get-pip.py | python
-
PyCharm 인스턴스를 다시 시작하고 Preference 에서 Python 인터프리터를 확인하십시오 .
답변
그러나 curl
명령 자체가 오류와 함께 실패하거나 업그레이드 후에도 “tlsv1 경고 프로토콜 버전”이 지속되면 pip
운영 체제의 기본 OpenSSL 라이브러리 버전 < 1.0.1
또는 Python 버전 < 2.7.9
(또는 3.4
Python 3의 < )이 최신 TLS 1.2 프로토콜을 지원하지 않음을 의미합니다 것을 pip
요구하기 때문에 PyPI에 연결하는 약 년 전 . 파이썬 인터프리터에서 쉽게 확인할 수 있습니다.
>>> import ssl
>>> ssl.OPENSSL_VERSION
'OpenSSL 0.9.8o 01 Jun 2010'
>>> ssl.PROTOCOL_TLSv1_2
AttributeError: 'module' object has no attribute 'PROTOCOL_TLSv1_2'
AttributeError
(대신 예상 ‘5’)는 파이썬 다음 stdlib 의미 ssl
구하려면 openssl lib 디렉토리에 컴파일 된 모듈은, (에서 OpenSSL 라이브러리가 이상 업데이트 할 수 있습니다 경우에도)을 TLSv1.2 프로토콜에 대한 지원이 부족하다.
다행히도 추가 Python 패키지를 수동으로 설치하여 Python (및 전체 시스템) 을 업그레이드하지 않고도 해결할 수 있습니다 . 자세한 단계별 가이드는 여기에서 확인할 수 있습니다 .
참고
curl
와pip
및wget
모든 것은 SSL 연결을 (사용 설정에 대해 동일한 OpenSSL을 lib 디렉토리에 따라$ openssl version
명령). libcurl에서 지원은 컬 버전 1.2 이후 TLS 7.34 ,하지만 오래된 컬 버전은 해야 연결할 수 있다면 당신은 OpenSSL 버전 1.0.2 (이상)했다.
PS
의 경우 파이썬 3 , 사용하시기 바랍니다python3
및pip3
사방 (당신이에하지 않는 한 venv / VIRTUALENV)에 포함curl
에서 명령 위 :
$ curl https://bootstrap.pypa.io/get-pip.py | python3 --user
답변
OS X에서 @Anupam의 답변에 따라 실행 권한에 관계없이 다음과 같은 오류가 발생했습니다.
EnvironmentError로 인해 패키지를 설치할 수 없습니다 : [Errno 13] 권한 거부 : …
결국 작동하는 것은 내 브라우저 ( https://pypi.org/simple/pip/ )에서 직접 PyPI에서 최신 pip 패키지 (9.0.3)를 다운로드 하고 내용을 추출한 다음 로컬로 패키지를 pip 설치하는 것이 었습니다 .
pip install ./pip-9.0.3/
이것은 내 [SSL: TLSV1_ALERT_PROTOCOL_VERSION]
오류를 수정했습니다.
답변
@Anupam 의 솔루션이 나를 위해 일했습니다. 그러나 sudo
가상 파이썬 환경의 정확한 위치 를 사용 하고 지정해야했습니다.
curl https://bootstrap.pypa.io/get-pip.py | sudo /Users/{your user name}/{path to python}/bin/python
답변
로컬 버전을 업그레이드하기 위해 약간의 변형을 사용했습니다.
curl https://bootstrap.pypa.io/get-pip.py | python - --user
에 설명 된대로 홈 디렉토리 아래 핍과 패키지를 유지하는 경우이 문제가 발생 이 요점 .
답변
다음 솔루션이 저에게 효과적이었습니다.
brew install python2
또한 pip
버전 1.10.1로 업그레이드
답변
TLS 버전을 확인하십시오.
python2 -c "import urllib2,json; print(json.loads(urllib2.urlopen('https://www.howsmyssl.com/a/check').read())['tls_version'])"
TLS 버전이 1.2 미만인 경우 PyPI 리포지토리가 초기 TLS를 더 이상 사용하지 않는 경우가 많으므로 업그레이드해야합니다.
출처- 파이썬 업그레이드 시간 : TLS v1.2는 곧 필수입니다
다음 명령을 사용하여 TLS 버전을 업그레이드 할 수 있습니다.
sudo apt-get update && sudo apt-get install openssl libssl-dev
문제가 해결 될 것입니다. 행운을 빕니다!
편집 : TLS 버전에 관계없이 개인 파이썬 패키지 저장소를 사용하여 패키지를 다운로드 할 수 있습니다.
개인 파이썬 패키지 리포지토리