Ubuntu – Cannot use pip (ubuntu) [pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. ]

pippython3

$ sudo pip install numpy    # or anything else

error:

The directory '/home/user/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. (tried sudo -H, the rest errors persist)  
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.    
Collecting numpy  
  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/numpy/  
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  
$ python -V
Python 3.7.3  
$ pip -V
pip 19.0.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
$ whereis pip
pip: /usr/local/bin/pip2.7 /usr/local/bin/pip3.7 /usr/local/bin/pip /usr/local/bin/pip3.6  

pip3.6 appeared after:

$ sudo su
$ update-alternatives --install /usr/bin/python python /usr/bin/python3 1

In anaconda environments, pip works fine.

Is deleting things related with python, at a safe extend – without breaking the system, and re-install stuff properly, a preferable solution? And how to do so?

I know that there are a lot of similar questions, but I've tried a lot of stuff (obviously, I messed something) and I haven't solve the problem.

Thanks!

Best Answer

1- Avoid to use sudo when you don't need to.
2- Since you're using Python3, the appropriate way the install a package in Python3 is using pip3.
So the command will be as follows: pip3 install --user <package_name> Where:

  • pip3 is for Python3.

  • install to install a package using pip3.

  • --user to save that downloaded package in the current user directory (so you'll not need more privileges).

  • package_name any Python package.

EDIT:
1. Install the necessary packages for Python and ssl: sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

  1. Download and unzip "Python-3.7.0.tar.xz" from https://www.python.org/ftp/python/ into your home directory.

  2. Open terminal in that directory and run: ./configure

  3. Build and install: sudo make && sudo make install

  4. Install packages with: pip3 install package_name