Reputation: 725
I'm a begginer in Python, and some problems are happening. This is a script for installing python 3.6.10:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install zlib1g-dev
apt-get install -y libxml2-dev libxslt1-dev libffi-dev libssl-dev
apt-get install -y libgdal-dev
apt-get install -y tor
apt-get install -y unzip
apt-get install -y s3cmd
apt-get install -y libfreetype6-dev
apt-get install -y pkg-config
apt-get install -y qt5-default
apt-get install -y libqt5webkit5-dev
apt-get install -y texinfo
apt-get install -qy firefox xvfb
apt-get install -y tree
apt-get install -y htop
apt-get install -y chromium-browser
sudo apt-get install build-essential checkinstall
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
cd /opt
sudo wget https://www.python.org/ftp/python/3.6.10/Python-3.6.10.tgz
sudo tar -xvf Python-3.6.10.tgz
cd Python-3.6.10
sudo ./configure --with-ssl
sudo make
sudo make install
sudo apt-get install -y build-essential python-pip python3-pip git
sudo -H pip install --upgrade pip
sudo -H pip3 install --upgrade pip
The installation seems to work properly, except by the pip3. Errors are occuring, and I didn't find the solution for that.
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
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/pip/
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/pip/
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/pip/
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/pip/
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/pip/
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
Requirement already up-to-date: pip in /usr/local/lib/python3.6/site-packages (18.1)
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
How can I fix it? And why it's happening?
Upvotes: 1
Views: 1245
Reputation: 40918
Firstly: your build of Python should allow you to use python3 -m pip
as your pip
command. The -m
flag is good practice anyway as it will make sure that you're associating the pip
you use with the correct Python interpreter. So, the python-pip python3-pip
install should not be necessary.*
Secondly: with regards to the SSL option, it's possible you might need python-openssl
. I am, ironically, getting a server-side error when I try to search for this on packages.ubuntu.com, but it's shown in this up to date example alongside libssl-dev
.
Here is a Dockerfile demonstrating both of the above points:
docker image build -f Dockerfile.60814903 -t so60814903:1 .
docker container run -it --rm so60814903:1
In that shell, you should see that you have python3 -m pip
available.
Last tip, consider a solution that will help you manage multiple Python versions alongside each other. pyenv is one such tool, and there are others out there also.
Specifically, ./configure
by default will use --with-ensurepip='upgrade'
. Here is an example of an installation that uses --with-ensurepip=no
and installs pip separately.
Upvotes: 1