由于 CentOS 7 是一个早已结束支持的操作系统。系统的 RPM 包管理器 yum 能搜索到的 Python 版本最高是 3.6.8,要想使用更高版本的 Python,只能自行下载源码编译。
安装依赖库
更新系统并安装依赖包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19sudo yum update -y
sudo yum groupinstall "Development Tools" -y
sudo yum install -y \
gcc \
gcc-c++ \
openssl-devel \
bzip2-devel \
libffi-devel \
zlib-devel \
ncurses-devel \
sqlite-devel \
readline-devel \
tcl-devel \
tk-devel \
gdbm-devel \
db4-devel \
libpcap-devel \
xz-devel \
make安装必要的库,CentOS 7 默认的 OpenSSL 版本可能过旧,无法满足 Python 3.12.x 的要求。可以尝试安装更新版本的 OpenSSL:
1
2sudo yum install -y epel-release
sudo yum install -y openssl11 openssl11-devel然后,创建 OpenSSL 1.1 的符号链接,使其在编译时能够被找到:
1
2
3mkdir /usr/local/openssl11
ln -s /usr/lib64/openssl11 /usr/local/openssl11/lib
ln -s /usr/include/openssl11 /usr/local/openssl11/include下载并解压 Python 3.12.4 源码
1
2
3wget https://www.python.org/ftp/python/3.12.4/Python-3.12.4.tgz
tar xzf Python-3.12.4.tgz
cd Python-3.12.4配置编译选项,使用
--enable-optimizations
或--with-lto
选项配置编译,启用优化:1
2
3
4
5./configure \
--with-openssl=/usr/local/openssl11 \
--with-tcltk-includes="-I/usr/include" \
--with-tcltk-libs="-L/usr/lib" \
--with-lto--enable-optimizations
: 使用 profile-guided optimization (PGO),需要运行测试集来生成优化信息,可能会与某些系统配置不兼容
--with-lto
(链接时间优化),它不会依赖 PGO,但依然能提供优化性能。--with-lto
通常比--enable-optimizations
兼容性更好,且能够在大多数情况下显著提升性能。如果在使用
--enable-optimizations
时遇到编译失败,建议首先检查 gcc 版本是否足够新,尝试仅使用--with-lto
代替,并检查是否有足够的系统资源支持优化编译。如果问题仍然存在,考虑不使用 PGO 进行优化。编译并安装 Python
1
2
3make -j$(nproc)
sudo make altinstall注意: 使用
make altinstall
是为了避免覆盖系统的默认 Python 版本。