下面是详细讲解“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版本
- 添加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即可解决问题。
sudo ./configure --prefix=/usr/local/python3.7 --with-openssl=/usr/local/openssl
sudo make && make install
方法二:重新编译Python3.7
- 安装依赖库:
sudo yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
- 下载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
示例说明
示例一:更新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的解决方法的完整攻略,希望能对你有所帮助。