编译安装Python3.6及以上
前言
系统环境为centos6或7系统,编译安装python3.6及以上版本需要带上ssl模块,否则后面pip3安装会出现ssl类似的报错。而3.6及以上中的ssl模块需要本机openssl版本为1.0.2及其以上,所以需要先检查openssl版本,用openssl version
,本文将介绍低版本OpenSSL和高版本openssl环境下Python3.6及以上版本的编译安装。
一、依赖安装
yum install gcc gcc-c++ patch libffi libffi-devel python-devel zlib zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y
二、检查OpenSSL
openssl version
Tips:centos6默认都是低于1.0.2版本的OpenSSL,centos7默认一般都是等于1.0.2版本的OpenSSL。
三、升级openssl(可选)
3.1 联网升级
yum install openssl* -y
3.2 编译升级
1)说明:openssl编译用config,而不是configure,另外openssl编译安装依赖zlib动态库,所以一定要shared zlib。(openssl编译安装时间比较久)
ps:在官网下载openssl-1.1.1g.tar.gz编译安装不通过,原因未知,建议用1.1.1d
wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz
tar xf openssl-1.1.1d.tar.gz
cd openssl-1.1.1d
./config --prefix=$HOME/openssl shared zlib
make && make install
2)设置环境变量LD_LIBRARY_PATH
说明:这一步一定要有!!LD_LIBRARY_PATH环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。当执行函数动态链接.so时,如果此文件不在缺省目录下‘/lib' and ‘/usr/lib',那么就需要指定环境变量LD_LIBRARY_PATH。
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/openssl/lib" >> $HOME/.bash_profile
source $HOME/.bash_profile
3)CentOS系统调用python3.7命令 , 例如crond , 需要使用到库 , 建议利用链接到系统库目录中(*此步骤根据实际需求可选)
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
四、编译安装Python3.x.x(俩种情况)
4.1 编译升级openssl的情况下
tar -zxvf Python-3.7.0.tgz
./configure --prefix=$HOME/Py37 --with-openssl=$HOME/openssl
make && make install
4.2 没有升级或联网升级openssl的情况下
1)说明:低版本python编译安装可直接加--with-ssl 命令即可安装ssl模块,但python3.6之后此命令好像无法使用,要想安装ssl模块需要变着法子修改配置文件实现。
cd python源码包路径/Modules/
vim Setup.dist
2)取消注释这四行
3)再编译安装
yum install -y openssl-devel
cd ..
./configure --prefix=$HOME/Py37
make && make install
4)安装后如图提示,则表示成功
五、给Python添加环境变量(可选)
说明:此步骤可选,个人用户可以做,给客户安装不用做,告诉客户自己去相应路径下执行即可。
5.1 软连接方式
ln -s $HOME/Py37/bin/python3 /usr/bin/python3
ln -s $HOME/Py37/bin/pip3 /usr/bin/pip3
5.2 只针对当前用户进行变量修改生效
vim ~/.bashrc
alias python3='/zzh_gpfs02/home/zzhgroup/chenyuan/software/python3/bin/python3.7'
alias pip3='/zzh_gpfs02/home/zzhgroup/chenyuan/software/python3/bin/pip3.7'
source ~/.bashrc
六、升级pip3(需联网)
pip3 install --upgrade pip
七、测试验证
7.1 执行python3 , 进入python环境
python3
7.2 导入ssl模块 , 测试是否安装成功(这里导入后没有回显即成功)
import ssl