如何使 SSL 在 pip3 中工作?

How to make SSL work in pip3?

Python 3.6.5 从源代码构建并与 Python 2.7.5.

一起安装

python3 打开 python 终端,但是 pip3 无法安装任何带有 SSL 错误的包。

[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

观察到 python3 中未安装 SSL 模块。但是,SSL 在 python2 中运行良好。是否可以配置 python3 以引用 python2 使用的 SSL 位置?

此外,一项建议是安装 openssl-devel。安装时,检测到以下依赖性问题。

任何使 SSL 与 python3 一起工作的建议都是有帮助的。

[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

降级依赖项修复了依赖项问题。

yum downgrade pcre  krb5-libs  openssl-libs openssl

至此,openssl-devel 安装成功。

yum install openssl-devel

再次重新安装 python3(./configure、make 和 make altinstall)使 pip3 与 ssl 一起工作。