最近将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






Comments | 2 条评论
为什么我按照步骤升级了 python -V 还是显示了 Python 2.7.5
这个版本
@wizard 如果是确实按步骤升级好了,python是使用python2 噢。使用python3 命令来 使用python3