Home > OS >  With python installed from source can't install any package with pip (SSL module is not availab
With python installed from source can't install any package with pip (SSL module is not availab

Time:11-29

I'm on Ubuntu 22.04.1 which comes whit its own python3.11, where pip works perfectly. If I install other python versions through apt-get (sudo apt-get install python3.10) the related pip works perfectly.

But I just installed an alternative python version (3.7.9 ) from source (I'm not able to use apt for this python version), doing the following

cd usr/lib
sudo wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
sudo tar xzf Python-3.7.9.tg
cd Python-3.7.9
sudo ./configure --enable-optimizations
sudo make altinstall

Python3.7 works fine, but if I try to install any package (using pip3.7 or, after creating a virtualenv based on python3.7, using pip) I get the following warning

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

Followed by the error

ERROR: Could not find a version that satisfies the requirement numpy (from versions: none)
ERROR: No matching distribution found for numpy 

I'm sure I have Openssl installed because other versions of python don't give probelms with pip (also I can see ssl in the folder /etc/ssl) so the problem seems to be related only on a link between ssl and python installed from source.

Any suggestions?

CodePudding user response:

If it can help anyone, I found a solution: before doing

sudo ./configure --enable-optimizations
sudo make altinstall

I simply modified part of the file Modules/Setup.dist

from

# 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

to

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

Notice that /etc/ssl is the actual location where I have ssl installed.

After the file modification I than installed with

sudo ./configure --enable-optimizations
sudo make altinstall

And now (after eventually upgrading pip and setuptools) pip works fine.

  • Related