centos6.8安装python3.7无法import _ssl的解决方法

  • Post category:Python

下面是详细讲解“CentOS6.8安装Python3.7无法import_ssl的解决方法”的完整攻略。该问题主要是由于CentOS6.8自带的OpenSSL版本过低,无法支持Python3.7版本使用的新版SSL库所导致。

问题描述

在CentOS6.8系统上,安装了Python3.7后,在使用Python标准库时会出现以下错误信息:

    $ python3.7
    Python 3.7.6 (default, Nov 19 2019, 09:55:42)
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import ssl
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/local/lib/python3.7/ssl.py", line 98, in <module>
        import _ssl             # if we can't import it, let the error propagate
    ImportError: No module named '_ssl'

这是由于CentOS6.x系统自带的OpenSSL版本过低,不能满足Python3.7使用的新版SSL库所需的要求,因此需要更新OpenSSL版本或重新编译Python3.7。

解决方法

方法一:更新OpenSSL版本

  1. 添加epel源:
    sudo yum install epel-release
  1. 安装新版OpenSSL:
    sudo yum install openssl openssl-devel
  1. 创建软链接:
    sudo ln -s /usr/bin/openssl /usr/local/bin/openssl
  1. 然后重新编译安装Python3.7即可解决问题。
    sudo ./configure --prefix=/usr/local/python3.7 --with-openssl=/usr/local/openssl
    sudo make && make install

方法二:重新编译Python3.7

  1. 安装依赖库:
    sudo yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
  1. 下载Python3.7源码:
    wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
  1. 解压缩源码包:
    tar -zxvf Python-3.7.2.tgz
  1. 进入源码目录:
    cd Python-3.7.2
  1. 配置参数:
    ./configure --prefix=/usr/local/python3.7 --with-openssl=/usr/local/openssl
  1. 编译并安装:
    sudo make && make install
  1. 最后重新加载库文件:
    sudo ldconfig

示例说明

示例一:更新OpenSSL版本并重新编译Python3.7

    # 添加epel源
    sudo yum install epel-release

    # 安装新版OpenSSL
    sudo yum install openssl openssl-devel

    # 创建软链接
    sudo ln -s /usr/bin/openssl /usr/local/bin/openssl

    # 下载Python3.7源码
    wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz

    # 解压缩源码包
    tar -zxvf Python-3.7.2.tgz

    # 进入源码目录
    cd Python-3.7.2

    # 配置参数
    ./configure --prefix=/usr/local/python3.7 --with-openssl=/usr/local/openssl

    # 编译并安装
    sudo make && make install

    # 重新加载库文件
    sudo ldconfig

示例二:重新编译Python3.7并加快编译速度

    # 安装依赖库,加快编译速度
    sudo yum install -y gcc-c++ zlib zlib-devel libffi-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel xz-devel bzip2-devel

    # 下载Python3.7源码
    wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz

    # 解压缩源码包
    tar -zxvf Python-3.7.2.tgz

    # 进入源码目录
    cd Python-3.7.2

    # 执行配置,加入优化参数
    ./configure --prefix=/usr/local/python3.7 --enable-loadable-sqlite-extensions --enable-optimizations CFLAGS='-fPIC' CXXFLAGS="-fPIC"

    # 执行make命令,使用多核心编译,并开启优化
    sudo make -j8 && sudo make altinstall

    # 重新加载库文件
    sudo ldconfig

以上是CentOS6.8安装Python3.7无法import_ssl的解决方法的完整攻略,希望能对你有所帮助。