zoukankan      html  css  js  c++  java
  • 解决Python3.7.6在centos6.8服务器上pip出现ssl问题


    1.安装相关依赖

    yum install gcc libffi-devel zlib* openssl-devel libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y


    2.下载并解压
    wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
    # 下载
    wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
    # 解压并编译:
    tar -xvJf Python-3.7.1.tar.xz
    cd Python-3.7.1

    3.编译安装
    ./configure prefix=/usr/local/python3
    make && make install
    # 编译完成后,创建软链接文件到执行文件路径:
    ln -s /usr/local/python3/bin/python3 /usr/bin/python3
    ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
    # 我们可以清除之前编译的可执行文件及配置文件 && 清除所有生成的文件:
    make clean && make distclean

    bug: 使用pip 命令失败
    2.1 错误信息
    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

    2.2 原因
    系统版本centos6.5,其中openssl的版本为OpenSSL 1.0.1e-fips 11 Feb 2013,而python3.7需要的openssl的版本为1.0.2或者1.1.x,需要对openssl进行升级,并重新编译python3.7.0。yum 安装的openssl 版本都比较低。

    2.3 升级openssl
    # 1.下贼openssl
    wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz
    tar -zxvf openssl-1.1.1a.tar.gz
    cd openssl-1.1.1a
    # 2.编译安装
    ./config --prefix=/usr/local/openssl no-zlib #不需要zlib
    make
    make install
    # 3.备份原配置
    mv /usr/bin/openssl /usr/bin/openssl.bak
    mv /usr/include/openssl/ /usr/include/openssl.bak
    # 4.新版配置
    ln -s /usr/local/openssl/include/openssl /usr/include/openssl
    ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/local/lib64/libssl.so
    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 version 提示:

    /usr/local/openssl/bin/openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

    假如你的libssl.so.1.1 文件在/usr/local/openssl/lib/下面,可以这样做

    ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1

    ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

    3.3 重新安装python
    ./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl
    make
    make install


    导出Python环境安装包
    [root@bogon ~]# pip freeze > packages.txt
    这将会创建一个 packages.txt文件,其中包含了当前环境中所有包及各自的版本的简单列表(即pip list 所列出的包列表)
    安装导入Python环境包
    [root@bogon ~]# pip install -r packages.txt

  • 相关阅读:
    获取Enum枚举值描述的几法方法
    Android开发入门 Button事件实现的方法(原创)
    最有价值的.Net第三方控件
    Eclipse快捷键大全(转载)
    recovery教程
    XP系统通过无线网卡共享宽带给其他设备,正确的共享设置(修正版,绝对可行)
    使用Eclipse写QT
    Android 4.0模拟器弹出“谷歌拼音输入法”已停止运行的解决方法
    C# 枚举用法总结
    谷歌安卓系统使用必读,什么是root, Recovery, Radio, APP TO SD, Rom
  • 原文地址:https://www.cnblogs.com/pxfb/p/12316516.html
Copyright © 2011-2022 走看看