前言
本文主旨
原本 CentOS 7 下通过 Yum 安装的 Python3 版本为 3.6。由于版本太低,不满足一些应用程序对 Python 版本的最低要求。
因此,本文要在 CentOS 7 以编译安装的方式升级 Python 的版本到当前(2025-04)的最新稳定版本—— Python 3.12.9。
因为 CentOS 7 原先的 OpenSSL 版本太旧,不满足高版本 Python 的编译要求,可选择先安装 openssl11,通过添加 EPEL 源方式安装它。
要安装高版本的软件,最好先升级 GCC 的版本,本文将升级 GCC 工具包到 v11。
所有 Python 源代码存档于:https://www.python.org/ftp/python/
什么是 Python
Python 是一种广泛使用的解释型的高级且通用的计算机编程语言。
Python 语言目前在数据分析、人工智能、网络爬虫、科学计算、图形界面应用等技术方向使用极其广泛,当然它也有很强 Web 开发的能力。
之所以 Python 有这样的跨界应用的能力,不得不归功于它的易用性,以及它那规模庞大且丰富的软件库(需要通过 PyPI 等软件包管理器来安装)。
Python 代码结构清晰优雅,它有个众周所知的信条——“Write less, do more”(写得少但做得多)。
Python 的特点
python 有以下的特点:
- 它同时支持结构化、过程式、反射式、面向对象函数式编程。
-
它是动态的脚本编程语言,并具有垃圾回收功能,能够自动管理内存的使用。
-
它简洁的语法能够让开发者以更少更清晰的代码来表达想法;
-
Python 代码使用空格缩进而非符号的方式来区分代码块,这使得用它写的代码相比之下更具有可读性;
-
Python 若有极强的跨平台能力,可在几乎所有的操作系统中使用;
-
Python 是自由的开源的且由社群驱动的软件,目前由 “Python 软件基金会” 管理;
-
Python 是近年来最受欢迎的编程语言之一,最近(2025年02月),它以近 23.88% 的市场占有率再次在世界排名第一,碾压 C语言、CPP 和 Java 等传统受欢迎的编程语言。
更换 CentOS 7 的软件源
由于 CentOS 7 的生命周期已经结束,所以要将其软件源更改为能够使用的镜像源网址。
这里选择阿里云的镜像。
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 或者
wget --continue -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
升级 GCC
安装开发工具包
首先要安装 CentOS 7 的开发工具包,以免到时覆盖掉新的 GCC 可执行文件。
cat>/tmp/installer.sh<<EOF
yum update -y
yum group install -y "development tools"
EOF
bash /tmp/installer.sh
安装 GCC-11
cat>/tmp/installer.sh<<EOF
yum update -y
yum install -y centos-release-scl
cd /etc/yum.repos.d
sed -i "s@mirrorlist=@# mirrorlist=@g" CentOS-SCLo-scl.repo
sed -i "s@mirrorlist=@# mirrorlist=@g" CentOS-SCLo-scl-rh.repo
sed -i "s@# baseurl=http://mirror.centos.org@baseurl=https://mirrors.aliyun.com@g" CentOS-SCLo-scl.repo
sed -i "s@#baseurl=http://mirror.centos.org@baseurl=https://mirrors.aliyun.com@g" CentOS-SCLo-scl-rh.repo
yum install -y devtoolset-11
EOF
bash /tmp/installer.sh
启用 GCC-11 相关的组件
cat>/tmp/installer.sh<<EOF
cat /etc/bashrc | grep -i "/opt/rh/devtoolset-11/enable"
if [ \$? -gt 0 ]; then
echo "source /opt/rh/devtoolset-11/enable" >>/etc/bashrc
fi
source /etc/bashrc
EOF
bash /tmp/installer.sh
创建软链接到系统可执行目录
ln -vsf /opt/rh/devtoolset-11/root/bin/* /usr/bin/
检验 GCC-11 是否安装成功
cat>/tmp/installer.sh<<EOF
/usr/bin/gcc --version | grep "gcc (GCC) 11."
code=\$?
if [ \$code -gt 0 ]; then
echo "+++++++++++++++++++++++++++++++++GCC-11 安装失败!"
echo "错误码: \$code"
else
echo "+++++++++++++++++++++++++++++++++GCC-11 安装成功!"
fi
EOF
bash /tmp/installer.sh
安装 OpenSSL11
cat>/tmp/installer.sh<<EOF
yum install -y epel-release wget
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum makecache
yum update -y
yum install -y openssl-devel openssl11 openssl11-devel openssl11-libs
EOF
bash /tmp/installer.sh
接下来安装 Python 3.12。
编译升级 Python
总结
本文通篇分别介绍了数个话题,其中有:
- 本文的主要内容概述;
- Python 的简介以及其的特点;
- 如何在 CentOS 7 系统下安装 GCC-11;
- 为编译 Python 3 安装了 EPEL,并为其配置了国内镜像源(阿里云 EPEL 镜像源);
- 通过 EPEL 安装了 openssl11 openssl11-devel 等软件包;
- 如何让通过源代码编译安装 Python 3.12.9 时使用 openssl11;
- 以及自我升级了 PyPI 的版本;
- 如何给 PyPI(pip3)更换上国内镜像源(清华大学镜像源);
- 最后测试一下编译安装的 PIP3 是否能正常安装软件包。
鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,欢迎互相探讨,一起学习,共同进步。
本文章可以转载,但是需要说明来源出处!
本文使用的部分图片来源于网上,若是侵权,请与本文作者联系删除: admin@icxzl.com

