Я работаю на:
Amazon Linux AMI 2018.03.0
Linux ip-xxx-yy-z-ww 4.14.77-70.59.amzn1.x86_64 #1 SMP Mon Nov 12 22:02:45 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Многопитоновая среда.На нем установлены как Python 2.7.15, так и 3.7.2.
Regular (Python2) pip работает без заминок.
Когда я пытаюсь запустить pip3 install flask
, я получаю следующие ошибки:
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Collecting flask
Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/flask/
Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/flask/
Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/flask/
Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/flask/
Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/flask/
Could not fetch URL https://pypi.org/simple/flask/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/flask/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
Could not find a version that satisfies the requirement flask (from versions: )
No matching distribution found for flask
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
Та же ошибка появляется, если я пытаюсь установить любой другой пакет.
pip3 версия 18.1
Добавление --trusted-host pypi.org
не помогает.
Установка CA-сертификатов не помогла
Python 3 установлен согласно следующему руководству: https://stackoverflow.com/a/8112006/8826349
РЕДАКТИРОВАТЬ: я теперь заметил, что при запуске make
на Python 3, он закончилуспешно, но выдает следующее сообщение:
Python build finished successfully!
The necessary bits to build these optional modules were not found:
_hashlib _ssl _tkinter
_uuid
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
The following modules found by detect_modules() in setup.py, have been
built by the Makefile instead, as configured by the Setup files:
_abc atexit pwd
time
Could not build the ssl module!
Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
LibreSSL 2.6.4 and earlier do not provide the necessary APIs, https://github.com/libressl-portable/portable/issues/381
EDIT2:
Кажется, моя проблема идентична this .Однако поток не предоставляет никаких решений, помимо описания проблемы.
Я пытался скомпилировать более новую версию openssl, используя это руководство.Но более новая версия openssl не решила мою проблему.
EDIT3:
Мне не удалось найти решение этой проблемы.
Похоже, что версия Amazon для Linux не работает с Python 3.
У них есть другая ОС, называемая Amazon Linux 2, где установка Python 3 так же проста, как и запуск yum install python3
Однако в Amazon Linux 2 есть свои проблемы.Это Python 2 установки не хватает pip
.Вы можете установить его вручную, запустив:
curl -O https://bootstrap.pypa.io/get-pip.py
python get-pip.py --user
Но это на самом деле переопределяет pip3, поэтому Python 3 остается без pip
.