如何在pip3中使SSL工作?

时间:2018-04-27 23:21:12

标签: python-3.x ssl openssl pip rhel

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

1 个答案:

答案 0 :(得分:2)

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

yum downgrade pcre  krb5-libs  openssl-libs openssl

现在,openssl-devel的安装成功了。

yum install openssl-devel

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