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

  • 相关阅读:
    hdu5728 PowMod
    CF1156E Special Segments of Permutation
    CF1182E Product Oriented Recurrence
    CF1082E Increasing Frequency
    CF623B Array GCD
    CF1168B Good Triple
    CF1175E Minimal Segment Cover
    php 正则
    windows 下安装composer
    windows apache "The requested operation has failed" 启动失败
  • 原文地址:https://www.cnblogs.com/pxfb/p/12316516.html
Copyright © 2011-2022 走看看