centos 7上,如何升级python到最新的版本?

0、背景说明

 

在centos 7上,默认安装出来的python是:2.7.5版本

[root@centos7 ~]# python --version
Python 2.7.5

 

 

通过yum安装出来的,适合当前操作系统的,最新的python版本是:3.6.8

[root@centos7 ~]# python3 --version
Python 3.6.8
 

 

这个时候,想要把python升级到最新的版本,该怎么操作?

 

本文介绍通过源码的方式,升级python3到最新的版本。

 

1、安装openssl

 

python3.11的源码编译,需要openssl 1.1版本以上

 

通过以下的步骤进行安装

 

  • 查看当前主机的openssl版本
[root@centos7 ~]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

 

是1.0.2的版本,需要进行升级到1.1.1版本

 

  • 移除本机的openssl
yum remove -y openssl openssl-devel

 

  • 移除之后,就没有openssl的命令了
[root@centos7 ~]# openssl version
-bash: openssl: command not found
[root@centos7 ~]# 

 

 

  • 下载openssl包

 

登录到openssl的官方网站,下载1.1.1最新版本的包

https://www.openssl.org/source/

 

 

 

通过以下的地址下载openssl包

https://www.openssl.org/source/openssl-1.1.1v.tar.gz

 

  • 上传到服务器并解压
[root@centos7 ~]# ls -ltr
total 9664
-rw-r--r-- 1 root root 9893443 Aug 24 02:06 openssl-1.1.1v.tar.gz

[root@centos7 ~]# tar -zxf openssl-1.1.1v.tar.gz 

[root@centos7 ~]# ls -l
total 9668
drwxrwxr-x 19 root root    4096 Aug  1 09:51 openssl-1.1.1v
-rw-r--r--  1 root root 9893443 Aug 24 02:06 openssl-1.1.1v.tar.gz
[root@centos7 ~]# 

 

 

  • 查看openssl.conf文件的目录
[root@centos7 ~]# find /etc/ -name openssl.cnf -printf "%h\n"
/etc/pki/tls

 

 

  • 编译、安装
cd openssl-1.1.1v
./config \
    --prefix=/usr/local/openssl \
    --libdir=lib \
    --openssldir=/etc/pki/tls  # 修改为上面查到的openssl.conf所在的目录
make -j1 depend
make -j8
make install_sw

 

  • 更新共享库缓存
ldconfig

 

 

  • 更新ssl配置,设置环境变量
tee /etc/profile.d/openssl.sh<<EOF
export PATH=/usr/local/openssl/bin:\$PATH
export LD_LIBRARY_PATH=/usr/local/openssl/lib:\$LD_LIBRARY_PATH
EOF


source /etc/profile.d/openssl.sh

 

  • 查看openssl的版本

 

[root@centos7 ~]# openssl version
OpenSSL 1.1.1v  1 Aug 2023
[root@centos7 ~]# 

 

 

出现版本信息,说明安装成功。

2、安装依赖包

 

这些依赖包,在编译python源码的时候,会用到

yum install -y make cmake gcc bzip2-devel libffi-devel zlib-devel tk-devel readline-devel \
               gdbm-devel sqlite-devel tkinter

 

3、下载python最新的源码包

 

登录下面的地址:

https://www.python.org/downloads/source/

 

下载到最新的源码包,这里的版本是3.11.4

下载地址:https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tgz

 

4、上传到服务器、解压

 

[root@centos7 ~]# ls -ltr
total 25908
-rw-r--r-- 1 root root 26526163 Aug 23 22:13 Python-3.11.4.tgz
[root@centos7 ~]# tar -zxf Python-3.11.4.tgz 
[root@centos7 ~]# ls -ltr
total 25912
drwxr-xr-x 16 1000 1000     4096 Jun  6 18:16 Python-3.11.4
-rw-r--r--  1 root root 26526163 Aug 23 22:13 Python-3.11.4.tgz
[root@centos7 ~]# 

 

 

5、编译、安装

  • 设置环境变量
export CFLAGS="-I/usr/local/openssl/include"
export LDFLAGS="-L/usr/local/openssl/lib -lssl -lcrypto"
export CPPFLAGS="-I /usr/local/openssl/include"

 

其中,/usr/local/openssl是openssl的安装路径。

 

注意:这两个变量非常的关键,如果不设置,会影响到后面的编译过程。

 

  • 进行编译、安装
cd Python-3.11.4
./configure \
    --with-openssl=/usr/local/openssl \
    --with-openssl-rpath=auto \
    --prefix=/usr/local/python-3.11.4 \
    --enable-optimizations
    
make  # 如果make失败,再执行几次就好了。
make altinstall

 

 

  • 安装之后,通过以下的命令查询python的安装
cd /usr/local/python-3.11.4/bin
./python3.11 --version

 

 

  • 使用pip3安装软件包
cd /usr/local/python-3.11.4/bin
./pip3.11 install -i https://mirrors.aliyun.com/pypi/simple/ ansible

 

当出现下面的,可以通过pip3命令安装软件包时,说明pip可以正常的使用ssl模块。

 

 

6、修改软链接

 

默认的环境中,python3命令,还是指向python3.6

[root@centos7 bin]# which python3
/usr/bin/python3
[root@centos7 bin]# ls -l /usr/bin/python3
lrwxrwxrwx 1 root root 9 Dec  8  2022 /usr/bin/python3 -> python3.6
[root@centos7 bin]# 

[root@centos7 bin]# which pip3
/usr/bin/pip3
[root@centos7 bin]# 

 

 

通过以下的命令,创建python3命令、pip3命令的软链接

rm -f /usr/bin/python3
rm -f /usr/bin/pip3

ln -s /usr/local/python-3.11.4/bin/python3.11 /usr/bin/python3
ln -s /usr/local/python-3.11.4/bin/pip3.11 /usr/bin/pip3

 

 

执行之后,查看python的命令

[root@centos7 ~]# python3 --version
Python 3.11.4
[root@centos7 ~]# 
[root@centos7 ~]# pip3 --version
pip 23.1.2 from /usr/local/python-3.11.4/lib/python3.11/site-packages/pip (python 3.11)
[root@centos7 ~]# 

 

python3命令已经升级到最新的版本3.11.4了。

 

升级成功。

posted @ 2023-08-24 10:52  Zhai_David  阅读(6454)  评论(4编辑  收藏  举报