How to make SSL work in pip3?

2019-04-29 22:03发布

问题:

Python 3.6.5 is built from source and installed along with Python 2.7.5.

python3 opens the python terminal, however pip3 fails to install any package with SSL error.

[root@servername openssl-OpenSSL_1_1_1-pre5]# pip3 install flask
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Collecting flask
  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/flask/
  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/flask/
  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/flask/
  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/flask/
  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/flask/
  Could not fetch URL https://pypi.python.org/simple/flask/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/flask/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)) - skipping
  Could not find a version that satisfies the requirement flask (from versions: )
No matching distribution found for flask

It is observed that SSL module is not installed in python3. However, SSL works well in python2. Is it possible to configure python3 to refer to the SSL location that python2 uses?

Also, one recommendation was to install openssl-devel. On installing that, the following dependency issue is detected.

Any suggestion to make SSL work with python3 is helpful.

[root@servername openssl-OpenSSL_1_1_1-pre5]# yum install openssl-devel
Loaded plugins: langpacks, rhnplugin, search-disabled-repos
This system is receiving updates from RHN Classic or Red Hat Satellite.
Resolving Dependencies
--> Running transaction check
---> Package openssl-devel.x86_64 1:1.0.1e-42.el7_1.4 will be installed
--> Processing Dependency: openssl-libs(x86-64) = 1:1.0.1e-42.el7_1.4 for package: 1:openssl-devel-1.0.1e-42.el7_1.4.x86_64
--> Processing Dependency: krb5-devel(x86-64) for package: 1:openssl-devel-1.0.1e-42.el7_1.4.x86_64
--> Running transaction check
---> Package krb5-devel.x86_64 0:1.12.2-14.el7 will be installed
--> Processing Dependency: krb5-libs(x86-64) = 1.12.2-14.el7 for package: krb5-devel-1.12.2-14.el7.x86_64
--> Processing Dependency: libverto-devel for package: krb5-devel-1.12.2-14.el7.x86_64
--> Processing Dependency: libcom_err-devel for package: krb5-devel-1.12.2-14.el7.x86_64
--> Processing Dependency: keyutils-libs-devel for package: krb5-devel-1.12.2-14.el7.x86_64
--> Processing Dependency: libselinux-devel for package: krb5-devel-1.12.2-14.el7.x86_64
--> Processing Dependency: libkdb5.so.7()(64bit) for package: krb5-devel-1.12.2-14.el7.x86_64
---> Package openssl-devel.x86_64 1:1.0.1e-42.el7_1.4 will be installed
--> Processing Dependency: openssl-libs(x86-64) = 1:1.0.1e-42.el7_1.4 for package: 1:openssl-devel-1.0.1e-42.el7_1.4.x86_64
--> Running transaction check
---> Package keyutils-libs-devel.x86_64 0:1.5.8-3.el7 will be installed
---> Package krb5-devel.x86_64 0:1.12.2-14.el7 will be installed
--> Processing Dependency: krb5-libs(x86-64) = 1.12.2-14.el7 for package: krb5-devel-1.12.2-14.el7.x86_64
--> Processing Dependency: libkdb5.so.7()(64bit) for package: krb5-devel-1.12.2-14.el7.x86_64
---> Package libcom_err-devel.x86_64 0:1.42.9-7.el7 will be installed
---> Package libselinux-devel.x86_64 0:2.2.2-6.el7 will be installed
--> Processing Dependency: libsepol-devel >= 2.1.9-1 for package: libselinux-devel-2.2.2-6.el7.x86_64
--> Processing Dependency: pkgconfig(libpcre) for package: libselinux-devel-2.2.2-6.el7.x86_64
--> Processing Dependency: pkgconfig(libsepol) for package: libselinux-devel-2.2.2-6.el7.x86_64
---> Package libverto-devel.x86_64 0:0.2.5-4.el7 will be installed
---> Package openssl-devel.x86_64 1:1.0.1e-42.el7_1.4 will be installed
--> Processing Dependency: openssl-libs(x86-64) = 1:1.0.1e-42.el7_1.4 for package: 1:openssl-devel-1.0.1e-42.el7_1.4.x86_64
--> Running transaction check
---> Package krb5-devel.x86_64 0:1.12.2-14.el7 will be installed
--> Processing Dependency: krb5-libs(x86-64) = 1.12.2-14.el7 for package: krb5-devel-1.12.2-14.el7.x86_64
--> Processing Dependency: libkdb5.so.7()(64bit) for package: krb5-devel-1.12.2-14.el7.x86_64
---> Package libsepol-devel.x86_64 0:2.1.9-3.el7 will be installed
---> Package openssl-devel.x86_64 1:1.0.1e-42.el7_1.4 will be installed
--> Processing Dependency: openssl-libs(x86-64) = 1:1.0.1e-42.el7_1.4 for package: 1:openssl-devel-1.0.1e-42.el7_1.4.x86_64
---> Package pcre-devel.x86_64 0:8.32-14.el7 will be installed
--> Processing Dependency: pcre(x86-64) = 8.32-14.el7 for package: pcre-devel-8.32-14.el7.x86_64
--> Finished Dependency Resolution
Error: Package: 1:openssl-devel-1.0.1e-42.el7_1.4.x86_64 (cat-rhel71_x86_64)
           Requires: openssl-libs(x86-64) = 1:1.0.1e-42.el7_1.4
           Installed: 1:openssl-libs-1.0.1e-51.el7_2.5.x86_64 (@rhel-x86_64-server-7)
               openssl-libs(x86-64) = 1:1.0.1e-51.el7_2.5
           Available: 1:openssl-libs-1.0.1e-34.el7.x86_64 (cat-rhel71_x86_64)
               openssl-libs(x86-64) = 1:1.0.1e-34.el7
           Available: 1:openssl-libs-1.0.1e-34.el7_0.3.x86_64 (cat-rhel71_x86_64)
               openssl-libs(x86-64) = 1:1.0.1e-34.el7_0.3
           Available: 1:openssl-libs-1.0.1e-34.el7_0.4.x86_64 (cat-rhel71_x86_64)
               openssl-libs(x86-64) = 1:1.0.1e-34.el7_0.4
           Available: 1:openssl-libs-1.0.1e-34.el7_0.6.x86_64 (cat-rhel71_x86_64)
               openssl-libs(x86-64) = 1:1.0.1e-34.el7_0.6
           Available: 1:openssl-libs-1.0.1e-34.el7_0.7.x86_64 (cat-rhel71_x86_64)
               openssl-libs(x86-64) = 1:1.0.1e-34.el7_0.7
           Available: 1:openssl-libs-1.0.1e-42.el7.x86_64 (cat-rhel71_x86_64)
               openssl-libs(x86-64) = 1:1.0.1e-42.el7
           Available: 1:openssl-libs-1.0.1e-42.el7_1.4.x86_64 (cat-rhel71_x86_64)
               openssl-libs(x86-64) = 1:1.0.1e-42.el7_1.4
Error: Package: krb5-devel-1.12.2-14.el7.x86_64 (cat-rhel71_x86_64)
           Requires: krb5-libs(x86-64) = 1.12.2-14.el7
           Installed: krb5-libs-1.13.2-12.el7_2.x86_64 (@rhel-x86_64-server-7)
               krb5-libs(x86-64) = 1.13.2-12.el7_2
           Available: krb5-libs-1.11.3-49.el7.x86_64 (cat-rhel71_x86_64)
               krb5-libs(x86-64) = 1.11.3-49.el7
           Available: krb5-libs-1.12.2-14.el7.x86_64 (cat-rhel71_x86_64)
               krb5-libs(x86-64) = 1.12.2-14.el7
Error: Package: krb5-devel-1.12.2-14.el7.x86_64 (cat-rhel71_x86_64)
           Requires: libkdb5.so.7()(64bit)
           Available: krb5-libs-1.11.3-49.el7.x86_64 (cat-rhel71_x86_64)
               libkdb5.so.7()(64bit)
           Available: krb5-libs-1.12.2-14.el7.x86_64 (cat-rhel71_x86_64)
               libkdb5.so.7()(64bit)
           Installed: krb5-libs-1.13.2-12.el7_2.x86_64 (@rhel-x86_64-server-7)
              ~libkdb5.so.8()(64bit)
Error: Package: pcre-devel-8.32-14.el7.x86_64 (cat-rhel71_x86_64)
           Requires: pcre(x86-64) = 8.32-14.el7
           Installed: pcre-8.32-15.el7_2.1.x86_64 (@rhel-x86_64-server-7)
               pcre(x86-64) = 8.32-15.el7_2.1
           Available: pcre-8.32-12.el7.x86_64 (cat-rhel71_x86_64)
               pcre(x86-64) = 8.32-12.el7
           Available: pcre-8.32-14.el7.x86_64 (cat-rhel71_x86_64)
               pcre(x86-64) = 8.32-14.el7
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

回答1:

Downgrading dependencies fixed the dependency issue.

yum downgrade pcre  krb5-libs  openssl-libs openssl

Now, installation of openssl-devel was successful.

yum install openssl-devel

Reinstalling python3 again (./configure, make and make altinstall) made pip3 work with ssl.