zoukankan      html  css  js  c++  java
  • centos 安装python3时遇到 ssl报错,更新ssl/ Python 3 No module named '_ssl'

    原文:https://blog.51cto.com/13544424/2149473

    pip3报错

    安装python3.7.0后发现使用pip会出现如下报错:

     
    [root@localhost ~]# /usr/local/python3/bin/pip3 install virtualenv
     
    pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
     
    Collecting virtualenv
     
    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/virtualenv/
     
    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/virtualenv/
     
    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/virtualenv/
     
    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/virtualenv/
     
    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/virtualenv/
     
    Could not fetch URL https://pypi.org/simple/virtualenv/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/virtualenv/ (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 virtualenv (from versions: )
     
    No matching distribution found for virtualenv
     
    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
     

    由于我的系统是CentOS release 6.7,所有openssl的版本为OpenSSL 1.0.1e-fips 11 Feb 2013,而python3.7需要的openssl的版本为1.0.2或者1.1.x,需要对openssl进行升级,并重新编译python3.7.0

    升级openssl

    1.下载最新版openssl

    https://www.openssl.org/source/openssl-1.1.1-pre8.tar.gz

    2.编译安装

     
    cd openssl-1.1.1-pre8
     
    ./config --prefix=/usr/local/openssl no-zlib #不需要zlib
     
    make
     
    make install

    3.备份原配置

    [root@s2-hadoop-test ~]# mv /usr/bin/openssl /usr/bin/openssl.bak
     
    [root@s2-hadoop-test ~]# mv /usr/include/openssl/ /usr/include/openssl.bak

    4.新版配置

    #将安装好的openssl 的openssl命令软连到/usr/bin/openssl
     
    [root@s2-hadoop-test ~]# ln -s /usr/local/openssl/include/openssl /usr/include/openssl
     
    #软链到升级后的libssl.so
     
    [root@s2-hadoop-test ~]# ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/local/lib64/libssl.so
     
     
     
    #将安装好的openssl命令软连到/usr/bin/openssl
     
    ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

    5.修改系统配置

    #写入openssl库文件的搜索路径
     
    echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
     
    #使修改后的/etc/ld.so.conf生效
     
    ldconfig -v

    6.查看openssl版本

    openssl version
     
    OpenSSL 1.1.1-pre8 (beta) 20 Jun 2018

    重新安装python

    注意:需要指定openssl的安装路径,--with-openssl

    ./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl
     
    make
     
    make install

    Python 3 No module named '_ssl'

    # new openssl install
    curl https://www.openssl.org/source/openssl-1.0.2g.tar.gz | tar xz && cd openssl-1.0.2g && ./config shared --prefix=/usr/local/ && make && make install
    
    # Python install script
    export LDFLAGS="-L/usr/local/lib/"
    export LD_LIBRARY_PATH="/usr/local/lib/"
    export CPPFLAGS="-I/usr/local/include -I/usr/local/include/openssl"
    apt-get/yum update
    apt-get/yum  install(update) build-essential checkinstall -y
    apt-get/yum install(update) libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev -y
    
    
    # 重新安装 python3
    ./configure --prefix=/usr/local/ make altinstall
  • 相关阅读:
    中国的南方人和北方人有什么区别?总算说透了!
    怎样通过穴位按摩来减轻脚踝扭伤的疼痛
    关于脚踝不得不说的各种事
    电影发烧友必备知识-720P、1080P、4K的区别
    有什么相见恨晚的小知识?
    男生有钱到底有多重要?
    es6学习笔记5--promise
    es6学习笔记4--数组
    js设计模式总结1
    es6学习笔记3--解构和对象
  • 原文地址:https://www.cnblogs.com/presleyren/p/13931911.html
Copyright © 2011-2022 走看看