• CentOS7.6 源码安装 Python-3.7.4


    安装步骤

    1. 下载安装包。
    wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz
    <说明>如果报SSL/TSL错误,则加上 --no-check-certificate 选项
    2. 解压缩
    tar -xzvf Python-3.7.4.tgz
    cd Python-3.7.4
    3. 配置
    * 查看配置选项。
    ./configure --help
    * 常用配置选项配置
    --prefix=/usr/local/python3  #pyhton的安装路径
    --with-openssl=/usr/local/openssl   #OpenSSL库的安装路径
    * 如果您想要一个包含所有稳定优化活动的版本构建,可以添加下面的选项(不过一般不需要,这个配置检查过程会很耗时的)
    --enable-optimizations
    * 查看系统是否安装了OpenSSL
    rpm -qa|grep -i openssl
    * 查看OpenSSL版本
    openssl version -a  #会显示出OpenSSL的安装路径
    * 我的安装配置选项
    ./configure --prefix=/usr/local/python3  --with-openssl=/usr/local/openssl  --with-ssl-default-suites=python

    4. 编译和安装。
    make && make install

    设置环境变量

    * 建立python命令的软链接
    ln -s /usr/local/python3/bin/python3.7 /usr/local/bin/python
    * 修改/etc/profile,添加如下内容:
    export PATH=$PATH:/usr/local/python3/bin
    保存后,执行: source /etc/profile
    * 执行命令查看安装版本
    # python --version
    Python 3.7.4
    * 直接运行Python命令,检测是否安装成功
    # python
    Python 3.7.4 (default, Sep 10 2019, 01:13:53)
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    # 当输出上面的信息表示Python-3.7.4安装成功了。

    pip工具的设置

    Python-3.7.4版本是自带有pip工具的,安装成功后,在安装路径/usr/local/python3/bin下有pip3和pip3.7两个可执行文件。
    * 建立pip3命令的软链接
    ln -s /usr/local/python3/bin/pip3.7 /usr/local/bin/pip3

    * 查看pip的版本信息:pip3 -V/--version

    * 查看帮助信息:pip3 -h/--help  或者 pip3 help

    安装过程遇到的问题

    1. ModuleNotFoundError: No module named '_ctypes'
    这个需要安装依赖库libffi-devel,执行命令如下:
    yum install libffi-devel -y # -y表示对所有的提问都回答yes

     2. pip工具安装Python三方库时报pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

    这个需要安装OpenSSL依赖库,安装Python-3.7.4之前先安装OpenSSL,最好是安装openssl-1.1.x版本的。安装Python成功后,执行如下命令:

    # python
    Python 3.7.4 (default, Sep 10 2019, 23:12:07)
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import ssl

    如果不报错,这说明ssl设置成功了。可以使用pip install <package>来安装Python第三方库了。

    题外话:我在网上看到,要结果ModuleNotFoundError: No module named '_ssl'的错误,需要修改Python-3.7.4/Modules目录下的Setup.dist和Setup文件的如下内容:

    #找到SSL相关配置
    #SSL=/usr/local/ssl
    #_ssl _ssl.c 
    #        -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl 
    #        -L$(SSL)/lib -lssl -lcrypto
    
    #取消掉上面4行注释,即
    SSL=/usr/local
    _ssl _ssl.c 
            -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl 
            -L$(SSL)/lib64 -lssl -lcrypto
    
    #SSL= 后面跟的是OpenSSL的安装路径,比如说我的安装路径是/usr/local/openssl,那就修改为
    SSL=/usr/local/openssl,可以通过openssl version -a命令查看安装路径。

    但是,我觉得这个比较麻烦,我的安装过程是没有修改Modules目录下的Setup.dist和Setup的这两个文件的,但是import ssl仍然是成功的,没有报错。

    Reference

    ImportError: No module named _ssl解决方法  https://blog.csdn.net/xiemanR/article/details/85224509

    centos7.3编译安装OpenSSL1.1.1b  https://cloud.tencent.com/developer/article/1406810

    centos6.8安装python3.7.3报错Can't connect to HTTPS URL because the SSL module is not available问题解决  http://www.mamicode.com/info-detail-2713977.html

    CentOS7.6编译安装openssl-1.1.1c https://www.cnblogs.com/yunfan1024/p/11504039.html

     

  • 相关阅读:
    Unity3D AssetBundle相关
    [转]Unity3D新手引导开发手记
    努力多彩
    js sendBeacon
    js document.activeElement及使用
    js requestAnimationFrame
    js 1+'2' == '1'+'2'
    js scrollIntoViewIfNeeded
    汉字 3个字节
    js 浅拷贝和深拷贝
  • 原文地址:https://www.cnblogs.com/yunfan1024/p/11495236.html
Copyright © 2020-2023  润新知