I'm running on:
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
Multi-python environment. It has both Python 2.7.15 and 3.7.2 installed.
Regular (Python2) pip works without a hitch.
When I try to run pip3 install flask
I get the following errors:
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
The same error appears if I try to install any other package.
pip3 version is 18.1
Adding --trusted-host pypi.org
does not help.
Installing ca-certificates did not help
Python 3 installed according to the following guide: https://stackoverflow.com/a/8112006/8826349
EDIT:
I now noticed, that when running make
on Python 3, it finished successfully, but had the following message:
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:
My issue seems to be identical to this. However the thread does not provide any solutions beyond describing the problem.
I've tried to compile a newer version of openssl using this guide. But newer openssl version did not resolve my issue.
EDIT3:
I was unable to find a solution for this issue.
It seems that Amazon's Linux version does not work well with Python 3.
They do have a different OS, called Amazon Linux 2, where installiing Python 3 is as easy as running yum install python3
However, Amazon Linux 2 has it's own issues. It's Python 2 installation lacks pip
. You can install it manually by running:
curl -O https://bootstrap.pypa.io/get-pip.py
python get-pip.py --user
But this actually overrides pip3, so then Python 3 remains without a pip
.