WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available

54,072

Solution 1

I think you may have inadvertently installed without something it needs. The error looks similar to one generated by the python requests library.

I would check this is properly installed and it's dependencies are met. I notice that python-openssl is only a suggested package and not a required one. You might want to see if installing this one helps.

Package: python3-requests
Depends: python3-certifi, python3-chardet (<< 3.1.0), python3-idna, python3-urllib3 (<< 1.26), python3:any, ca-certificates, python3-chardet (>= 3.0.2), python3-urllib3 (>= 1.21.1)
Suggests: python3-cryptography, python3-idna (>= 2.5), python3-openssl, python3-socks, python-requests-doc

Solution 2

To do we must compile it and install each dependency

  • Download if need https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.x
  • Unpack file
    tar zxvf Python-3.7.0.tar.gz --directory /tmp
    cd /tmp
    
  • Edit file Setup.dist to enabled SSL
    cd Python-3.7.0/Modules/
    vi Setup.dist
    
  • un-comment following line and update openssl home
    SSL=/usr/local/ssl  <--- substitute with your openssl home directory
    _ssl _ssl.c \
            -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
            -L$(SSL)/lib -lssl -lcrypto
    
  • save and compile python for distribution
    cd ../
    ./configure --enable-optimizations CFLAGS="-O3" --prefix=/opt/primeur/python3.7
    make
    make install
    
  • Try it

    cd /opt/primeur/python3.7/bin
    [root@myserver bin]# python3
    
    Python 3.7.0 (default, May 5 2020, 22:31:07)
    
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
    
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    
  • update pip with command

    [root@myserver bin]#./pip3 install --upgrade pip
    
  • install any dependency using pip3 install like

    [root@myserver bin]#./pip3 install termcolor
    
    Collecting termcolor
    Using cached https://files.pythonhosted.org/packages/8a/48/a76be51647d0eb9f10e2a4511bf3ffb8cc1e6b14e9e4fab46173aa79f981/termcolor-1.1.0.tar.gz
    Installing collected packages: termcolor
    Running setup.py install for termcolor ... done
    Successfully installed termcolor-1.1.0
    

Solution 3

This solution worked very well for me:

SSL issues with Python 3.7 Install From Source

Thanks Josh.

I make a summary of the procedure:


Steps

I decided to just install openSSL again by pulling down the newest version of the source code.

sudo apt-get install -y wget
mkdir /tmp/openssl
cd /tmp/openssl
wget https://www.openssl.org/source/openssl-1.0.2q.tar.gz
tar xvf openssl-1.0.2q.tar.gz
cd /tmp/openssl/openssl-1.0.2q
./config
make
sudo make install

The key here (and the reason i’m writing this post) is to show how to tell Python where this new installation of openSSL is. By default your manual install of openSSL will be in /usr/local/ssl. You can confirm this by checking the modify time of the ssl directory with ls -la /usr/local/ssl.

By default, Python isn’t going to look here. We need to fix that. To begin, run the first part of the Python install script (as seen below).

# Install requirements
sudo apt-get install -y build-essential
sudo apt-get install -y checkinstall
sudo apt-get install -y libreadline-gplv2-dev
sudo apt-get install -y libncursesw5-dev
sudo apt-get install -y libssl-dev
sudo apt-get install -y libsqlite3-dev
sudo apt-get install -y tk-dev
sudo apt-get install -y libgdbm-dev
sudo apt-get install -y libc6-dev
sudo apt-get install -y libbz2-dev
sudo apt-get install -y zlib1g-dev
sudo apt-get install -y openssl
sudo apt-get install -y libffi-dev
sudo apt-get install -y python3-dev
sudo apt-get install -y python3-setuptools
sudo apt-get install -y wget
# Prepare to build
mkdir /tmp/Python37
cd /tmp/Python37
# Pull down Python 3.7, build, and install
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
tar xvf Python-3.7.0.tar.xz

Now STOP, cd to /tmp/Python37/Python-3.7.0 and open up the file Modules/Setup.dist

You should see the following lines COMMENTED.

# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
SSL=/usr/local/ssl
 _ssl _ssl.c \
    -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
    -L$(SSL)/lib -lssl -lcrypto

What you need to do is UNCOMMENT these lines so that they are seen during our Python compile. Now you can finish up by running that last few lines of our python script.

cd /tmp/Python37/Python-3.7.0
./configure --enable-optimizations
sudo make altinstall

At this point I now had a working python and pip (mapped to python3.7 and pip3.7 in my path).

Share:
54,072

Related videos on Youtube

Imran Abdalla
Author by

Imran Abdalla

Updated on September 18, 2022

Comments

  • Imran Abdalla
    Imran Abdalla over 1 year

    I'm using Kali Linux 2020.1, I installed Python3.7, then after trying to install modules using pip3 command I keep getting this error message.

      WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
        ERROR: Could not find a version that satisfies the requirement flask (from versions: none)
        ERROR: No matching distribution found for flask
    
        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
    
    • Ignácio Loureiro
      Ignácio Loureiro about 3 years
      Check the openssl version, probably you need update this.
  • Philip Couling
    Philip Couling almost 4 years
    It's unusual to install any python module this way. Could you explain why it needs to be built from source rather than installing via one of the mainstream channels? eg: install using apt
  • Andrea Fontana
    Andrea Fontana almost 4 years
    because I install on RedHat without YUM
  • Philip Couling
    Philip Couling almost 4 years
    This question is about installing on Kali Linux which does have apt.
  • Culip
    Culip over 2 years
    I redid something similar with Python 3.10 and CentOS 7, tried to update PIP: /usr/local/bin/python3.10 -m pip install --upgrade pip but the PIP update didn't work: WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(0, 'unknown error (_ssl.c:4111)'))': /simple/pip/
  • Admin
    Admin almost 2 years
    +1; This answer is very helpful, as it helped me understand the point of sp ecifying openssl directory path (as I had multiple versions on a legacy system) while doing python make.