python3.7 ImportError: No module named _ssl 解决方法

1、原因

本人环境:centos6,openssl 1.0.1
查询原因是openssl 1.0.1,不支持python3版本,这点可以确定,因为python2 import ssl就不报错

2、解决方案

升级openssl版本

1、下载openssl

wget http://www.openssl.org/source/openssl-1.1.1.tar.gz

2、安装依赖包

yum install -y zlib zlib-dev openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++

3、安装openssl

openssl配置是用config,而不是configure,另外openssl编译安装依赖zlib动态库,所以一定要shared zlib

wget http://www.openssl.org/source/openssl-1.1.1.tar.gz
tar -zxvf openssl-1.1.1.tar.gz
cd openssl-1.1.1
./config --prefix=$HOME/openssl shared zlib
make && make install

4、设置环境变量

主要用于指定查找共享库(动态链接库)

echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/openssl/lib" >> $HOME/.bash_profile
source $HOME/.bash_profile

5、卸载python和软连接

rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps  # 删除python3
whereis python3 |xargs rm -frv           删除所有残余文件

6、重新安装python3

wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz
tar -xvJf  Python-3.7.2.tar.xz
mkdir /usr/local/python3 
cd Python-3.7.2
# 编译指定刚安装openssl
./configure --prefix=/usr/local/python3 --enable-optimizations --with-openssl=$HOME/openssl
make clean  
make && make install

7、创建python3软链接

ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3

8、测试
在这里插入图片描述


版权声明:本文为qq_43076825原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。