CentOS7 编译安装Python3.12

Tom 更新于 2024.8.20

1. 说明

CentOS 7已成为历史,不过很多人还在这段是历史奋战。

  • Python2 的 Python2.7.5 是 CentOS 7 默认安装的版本;
  • Python3 的 Python3.6.8 是 CentOS 7 可以通过默认repo,直接用yum安装的版本。
yum install -y python3 

本文主要针对CentOS 7 中较高版本如3.12的编译安装。

2. 安装 OpenSSL-1.1.1

根据Python官网 “Python构建” 要求,在 3.10 及以上版本要求 OpenSSL 1.1.1,不然ssl模块无法使用。OpenSSL 1.1.1 可以通过 yum 或者 编译 两种方式安装。

1) Yum安装

yum install epel-release -y 
yum install openssl11 openssl11-devel -y 

# 下面参数一定要执行
export CFLAGS=$(pkg-config --cflags openssl11) 
export LDFLAGS=$(pkg-config --libs openssl11) 

# 查看版本
openssl11 version
OpenSSL 1.1.1k  FIPS 25 Mar 2021

2) 编译安装

下载地址: https://www.openssl.org/source/
说明:只能下载 1.1版本,3.0版本不行。
可选版本:https://www.openssl.org/source/openssl-1.1.1v.tar.gz 。

# 下载 ssl 
wget https://www.openssl.org/source/openssl-1.1.1v.tar.gz 

# 编译安装
./config --prefix=/usr/local/openssl shared
make && make install

# 替代原来的
mv /usr/bin/openssl /usr/bin/openssl10
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

# 创建 openssl.conf,指定动态链接库路径,内容如下:
cat /etc/ld.so.conf.d/openssl.conf 
/usr/local/openssl/lib

# 执行
ldconfig

# 查看版本
openssl version
OpenSSL 1.1.1v  1 Aug 2023

3. 安装 Python-3.12

1) 安装依赖包

安装编译工具和各模块依赖包,这个应该是比较全了,不全再自己百度吧。

# _ctypes:libffi-devel
# _tkinter: tcl, tcl-devel, tk, tk-devel
# _lzma:xz-devel

yum install -y gcc gcc-c++ make zlib-devel bzip2-devel ncurses-devel gdbm-devel readline-devel sqlite-devel libffi-devel tcl-devel tk-devel xz-devel

# 解决 _tkinter 编译问题
export TCLTK_LIBS="-ltk8.5 -ltkstub8.5 -ltcl8.5"

2) 安装Python

Python官网下载源码包,解压编译安装。
下载地址:https://www.python.org/downloads/source/

# 下载
wget https://www.python.org/ftp/python/3.12.4/Python-3.12.4.tgz

# 解压
tar zxvf Python-3.12.4.tgz

# 编译安装
# Centos7默认的gcc版本太低,--enable-optimizations 参数加上会报错,如加需要升级gcc
./configure --with-openssl=/usr/bin/openssl11 

make -j$(nproc)            # 注意看有没有提示模块报错,补充完,重新configure和make
# make test -j8            # 一般省略

# 官网建议使用 `make altinstall`
make altinstall -j$(nproc)   # 不会覆盖原来的python
# make install -j8

# 如需清理编译,内容在 Makefile 中可查看
make clean         # 清除上一次make命令生成的文件
make distclean     # 清除上一次make以及configure命令生成的文件

最后,CentOS 7已经退出历史舞台,能换就尽快换了吧 😦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值