最近将python项目部署到Centos服务器上时发现无法运行,原因是有些新功能在Python3中新添加,而系统自带的ptyhon版本为2.75,于是欲将系统自带Python进行升级。写下本文流程来梳理下流程以及踩过的坑
系统:Centos7.3
原Python版本:2.75
目标Python版本:3.8.0

PS:原来步骤是

  • 下载Python3.8压缩包
  • 解压压缩包
  • 创建安装路径
  • 编译和安装
  • 创建软连接
  • Python3 命令可正常使用

但是在实际过程中发现若按此操作安装完会出现新的pip3 install 命令无法使用,显示pip3无法使用SSL服务。
查阅资料后发现,在Centos7中自带的OpenSSL版本过低,在安装后Python3后无法调用OpenSSL,所以还先需安装高版本的OpenSSL,而且在编译python3安装时指定对应OpenSSL的目录,最后解决问题。

一.准备工作:

1.获取Root权限

sudo -i 

2.系统可能没有自带gcc,首先安装gcc编译工具。

yum -y install gcc 

3.安装Python3时所需要的依赖。

yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel 

二.安装新版本的OpenSSL

1.首先切换工作目录至/user/local,在Linux系统下,路径/usr/local相当于C:/Progrem Files/,通常安装软件时便安装到此目录下。

cd /usr/local

2.下载1.1版本的OpenSSL

wget https://github.com/openssl/openssl/archive/OpenSSL_1_1_1d.tar.gz

3.解压文件

tar -zxvf OpenSSL_1_1_1d.tar.gz

4.移动目录到解压后的目录

cd  openssl-OpenSSL_1_1_1d

5.编译&安装(逐行运行)

./config --prefix=/usr/local/openssl
make && make install

6.保存原来的旧版本OpenSSL(逐行运行)

mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/lib64/openssl /usr/lib64/openssl.old
mv /usr/lib64/libssl.so /usr/lib64/libssl.so.old

7.替换成新安装的OpenSSL(逐行运行)

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v

8.查看系统OpenSSL版本

openssl version

显示为1.1.1d版本,表示新版的OpenSSL安装成功了。

三.安装Python3

1.同样移动工作目录

cd /usr/local

2.下载Python3的安装包,包源在阿里服务器,速度很快

wget http://npm.taobao.org/mirrors/python/3.8.0/Python-3.8.0.tgz

3.解压缩安装包

tar -xzf Python-3.8.0.tgz

4.创建Python3文件夹,这个是最后Python3安装在这。

mkdir python3

5.进入刚刚解压缩的文件夹,不是刚才新建的Python3文件夹

cd Python-3.8.0

6.编写安装配置,这里是指明了安装目标路径为刚刚新建的Python3文件夹,同时告知了OpenSSL的路径

./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl

7.编译&安装

make && make install

8.收尾处理,这里采用建立软链接的方式来调用Python3
即表现为:python命令调用原来的python2.7.5,pip命令调用原来对应的pip
python3命令调用新版的python3.8.0,pip3命令调用新版本的pip

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

四.使用示例

前三部就已经将新版的Python安装完毕了,下面简介下怎么使用
新旧对比:

python3 -v
python -v

可以看到要使用python3,以后执行命令时使用

python3  xxxx.py

同理,使用Python3对应pip时命令使用

pip3 install   xxxx

祝大家开心