If you’re experiencing this error when ‘pip install’-ing or starting up a Docker container, then this post may be of use.
pip install -r requirements-dev.txt
WARNING: 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/jb-bayes/
docker-compose -f docker-compose.yml up -d mysql redis
Traceback (most recent call last):
File "/home/work/.pyenv/versions/bayes-service/bin/docker-compose", line 5, in <module>
...
...
from .. import tls
File "/home/work/.pyenv/versions/3.9.2/envs/bayes-service/lib/python3.9/site-packages/docker/tls.py", line 2, in <module>
import ssl
File "/home/work/.pyenv/versions/3.9.2/lib/python3.9/ssl.py", line 98, in <module>
import _ssl # if we can't import it, let the error propagate
ImportError: libssl.so.1.1: cannot open shared object file: No such file or directory
This is likely due to libssl being installed, then your python virtualenv env created, then something happening to libssl, such as being upgraded/removed.
The first step to resolve is to ensure you have libssl installed.
Download it from here
Then install:
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0-dev_1.0.2n-1ubuntu5.9_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5.7_amd64.deb
sudo apt install ./libssl1.0.0_1.0.2n-1ubuntu5.9_amd64.deb
sudo apt install ./libssl1.0-dev_1.0.2n-1ubuntu5.9_amd64.deb
Once this is done you’ll need to reinstall the Python version you were using when the error originally occurred. In my case I’m using pyenv so had to take the below steps:
pyenv uninstall 3.9.2
pyenv install 3.9.2
pip install -r requirements-dev.txt
# Now installs without issue
If you’re not using pyenv, then however you installed Python remove it and reinstall.