CentOs7 Python3安装Openssl以及解决ssl问题

【Python】CentOs7 Python3安装Openssl以及解决ssl问题

python3.7安装要求openssl最低版本是1.0.2,所以不能用yum安装的openssl,需要额外下载1.0.2的openssl来安装。
一、安装OpenssL
1、下载的压缩包放在根目录

wget http://www.openssl.org/source/openssl-1.0.2j.tar.gz
2、在文件夹下解压缩,得到openssl-1.0.2j文件夹

tar -xzf openssl-1.0.2j.tar.gz
3、进入解压的目录:

cd openssl-1.0.2j
4、设定Openssl 安装,( --prefix )参数为欲安装之目录,也就是安装后的档案会出现在该目录下:

./config --prefix=/usr/local/openssl
5、执行命令

./config -t
6.执行make,编译Openssl

这里如果出现如下错误

make[1]: gcc: Command not found

上网查才发现我安装的CentOS7中没有GCC编译器

保证系统网络畅通以后,执行命令 yum -y install gcc 安装GCC

7、安装 Openssl:

make install
8、查看版本

openssl version
二、安装Python3.6.4 及解决 ssl 问题
1、安装python3.6可能使用的依赖

编译前安装依赖
#yum install libffi-devel -y
#make install

yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++ openssl-devel
2、到python官网找到下载路径, 用wget下载

wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
3 解压tgz包

tar -xf Python-3.6.5.tgz
4 进入python目录

cd /Python-3.6.5/
5、编译,安装

5.1 提示找不到SSL模块

python安装完毕后,提示找不到ssl模块:

import _ssl # if we can’t import it, let the error propagate
ImportError: No module named _ssl
  5.2 重新编译python(去掉_socket socketmodule.c timemodule.c 和最后3行的注释)

复制代码
#修改Setup文件,在解压文件夹下的Modules文件夹下的Setup.dist
vim Modules/Setup.dist
#修改结果如下:去掉最后4行注释,得到如下的结果

Socket module helper for socket(2)

_socket socketmodule.c timemodule.c

Socket module helper for SSL support; you must comment out the other

socket line above, and possibly edit the SSL variable:

#SSL=/usr/local/ssl
_ssl _ssl.c
-DUSE_SSL -I(SSL)/includeI(SSL)/include -I(SSL)/include/openssl
-L$(SSL)/lib -lssl -lcrypto
复制代码
5.3 编译安装

#这里要先把目录切回到解压文件夹下 并withopenssl!!!(我在这里坑了好几天)
./configure --prefix=/usr/local/python3 --with-openssl=$HOME/openssl
make && make install
5.4 测试,已可正常使用

[[email protected] ~]# python
Python 3.6.4 (default, May 28 2018, 23:45:10)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.

import ssl

ok先安装个requests压压惊

CentOs7 Python3安装Openssl以及解决ssl问题

弄了两天,这环境太坑了,准备改投docker!!!