लेकिन अगर curlकमांड स्वयं त्रुटि के साथ विफल होता है, या "tlsv1 अलर्ट प्रोटोकॉल संस्करण" अपग्रेड होने के बाद भी बना रहता है pip, तो इसका मतलब है कि आपके ऑपरेटिंग सिस्टम का अंतर्निहित ओपनएसएसएल लाइब्रेरी संस्करण < 1.0.1या पायथन संस्करण < 2.7.9(या < 3.4पायथन 3 में) नए टीएलएस 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 के खिलाफ संकलित, TLSv1.2 प्रोटोकॉल (भले ही openssl पुस्तकालय या बाद में अद्यतन किया जा सकता कर सकते हैं) के लिए समर्थन की कमी है।
सौभाग्य से, इसे पायथन (और पूरे सिस्टम) को अपग्रेड किए बिना हल किया जा सकता है , अतिरिक्त पायथन पैकेजों को मैन्युअल रूप से स्थापित करके - स्टैकओवरफ़्लो पर विस्तृत चरण-दर-चरण गाइड यहां उपलब्ध है ।
ध्यान दें, curlऔर pipऔर wgetसब SSL कनेक्शन (उपयोग की स्थापना के लिए एक ही OpenSSL lib पर निर्भर $ openssl versionआदेश)। libcurl कर्ल संस्करण 7.34 के बाद से TLS 1.2 का समर्थन करता है , लेकिन पुराने कर्ल संस्करण कनेक्ट करने में सक्षम होने चाहिए यदि आपके पास ओपनएसएसएल संस्करण 1.0.2 (या बाद में) था।
पुनश्च
लिए अजगर 3 , का उपयोग करें python3और pip3हर जगह (जब तक आप में हैं एक venv / virtualenv), सहित curlसे आदेश ऊपर :
$ curl https://bootstrap.pypa.io/get-pip.py | python3 --user