[python] Python 패키지를 설치할 수 없습니다 [SSL : TLSV1_ALERT_PROTOCOL_VERSION]

pipSSL 오류가 발생 하여를 사용하여 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를 사용하지 않으면 작동하지 않습니다.)pippip install --upgrade pippip

이 자세한 답변 에서 언급했듯이 최근 pip에 대한 TLS 지원 중단으로 인한 것입니다. Python.org 사이트는 TLS 버전 1.0 및 1.1에 대한 지원중단했습니다 .

Python 상태 페이지에서 :

완료 -롤링 브라운 아웃이 완료되었으며 TLSv1.0 및 TLSv1.1이 비활성화되었습니다. 4 월 11 일 15:37 UTC

PyCharm (virtualenv) 사용자의 경우 :

  1. 쉘로 가상 환경을 실행하십시오. ( “./venv/bin/activate”를 자신의 경로로 바꾸십시오)

    source ./venv/bin/activate
  2. 업그레이드 실행

    curl https://bootstrap.pypa.io/get-pip.py | python
  3. PyCharm 인스턴스를 다시 시작하고 Preference 에서 Python 인터프리터를 확인하십시오 .


답변

그러나 curl명령 자체가 오류와 함께 실패하거나 업그레이드 후에도 “tlsv1 경고 프로토콜 버전”이 지속되면 pip운영 체제의 기본 OpenSSL 라이브러리 버전 < 1.0.1또는 Python 버전 < 2.7.9(또는 3.4Python 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 (및 전체 시스템) 을 업그레이드하지 않고도 해결할 수 있습니다 . 자세한 단계별 가이드는 여기에서 확인할 수 있습니다 .

참고 curlpipwget모든 것은 SSL 연결을 (사용 설정에 대해 동일한 OpenSSL을 lib 디렉토리에 따라 $ openssl version명령). libcurl에서 지원은 컬 버전 1.2 이후 TLS 7.34 ,하지만 오래된 컬 버전은 해야 연결할 수 있다면 당신은 OpenSSL 버전 1.0.2 (이상)했다.


PS
의 경우 파이썬 3 , 사용하시기 바랍니다 python3pip3사방 (당신이에하지 않는 한 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 버전에 관계없이 개인 파이썬 패키지 저장소를 사용하여 패키지를 다운로드 할 수 있습니다.
개인 파이썬 패키지 리포지토리