लेकिन अगर 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