编译安装Python3.6及以上

编译安装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)取消注释这四行

image-20201106110006021

3)再编译安装

yum install -y openssl-devel
cd ..
./configure --prefix=$HOME/Py37
make && make install

4)安装后如图提示,则表示成功

image-20201106115024532


五、给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
原文地址:https://www.cnblogs.com/cyrus0w/p/13935887.html