Tetapi jika curlperintah itu sendiri gagal dengan kesalahan, atau "tlsv1 alert protokol versi" tetap ada bahkan setelah upgrade pip, itu berarti sistem pustaka OpenSSL yang mendasari versi Anda < 1.0.1atau versi Python < 2.7.9(atau < 3.4dengan Python 3) tidak mendukung protokol TLS 1.2 yang lebih baru yang pipperlu terhubung ke PyPI sejak sekitar setahun yang lalu . Anda dapat dengan mudah memeriksanya dengan juru bahasa Python:
>>> 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'
The AttributeError(bukan yang diharapkan '5') berarti sslmodul Python stdlib Anda , dikompilasi dengan lib openssl lama, tidak memiliki dukungan untuk protokol TLSv1.2 (bahkan jika perpustakaan openssl dapat atau dapat diperbarui nanti).
Untungnya, ini dapat diselesaikan tanpa memutakhirkan Python (dan seluruh sistem), dengan menginstal paket Python tambahan secara manual - panduan langkah demi langkah yang terperinci tersedia di Stackoverflow .
Catatan, curldan pipdan wgetsemua tergantung pada lib OpenSSL yang sama untuk membuat koneksi SSL (gunakan $ openssl versionperintah). libcurl mendukung TLS 1.2 sejak curl versi 7.34 , tetapi versi curl yang lebih lama harus dapat terhubung jika Anda memiliki OpenSSL versi 1.0.2 (atau lebih baru).
PS
Untuk Python 3 , silakan gunakan python3dan di pip3mana saja (kecuali Anda berada di venv / virtualenv), termasuk curlperintah dari atas :
$ curl https://bootstrap.pypa.io/get-pip.py | python3 --user