Centos7.9编译安装Python3.12
系统环境是VMware Workstation Pro 17上安装的虚拟机Centos 7.9,采用最小化安装。具体安装和配置步骤如下:
# 1. 关闭并禁用防火墙
systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld # 禁止防火墙,重启也不会启动防火墙
# 2. 配置yum源
mkdir -p /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/ # 因为旧版yum源停止服务,备份后使用新的
curl -o /etc/yum.repos.d/Centos7-aliyun.repo https://mirrors.wlnmp.com/centos/Centos7-aliyun-x86_64.repo # 配置阿里云yum源,-o是将网络返回内容保存到指定文件
# 清理并重建缓存
yum clean all
yum makecache # 也可yum makecache fast更快
# 3. 安装常见依赖包
yum install -y zlib-devel openssl-devel bzip2-devel xz-devel libffi-devel sqlite-devel ncurses-devel readline-devel tk-devel gdbm-devel
yum install -y gcc make
yum install -y wget # 安装下载工具
# 4. 下载安装openssl-1.1.1w,为了解决编译Python时提示需要OpenSSL 1.1.1 or newer
openssl version # 默认带的OpenSSL 1.0.2k
mkdir /root/download # 创建下载目录
cd /root/download
wget https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz # 我下载失败,在Win11从https://openssl-library.org/source/old/1.1.1/index.html下载,然后执行:scp "C:\<your path>\openssl-1.1.1w.tar.gz" root@<ip of centos>:/root/download 将下载的文件上传到服务器,用FileZilla/Sftp等也可
tar -zxf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
make
make install
mv /usr/bin/openssl /usr/bin/openssl-old # 备份系统自带原始版本1.0.2k
# 建立软链接,以后使用openssl新版本1.1.1w
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
# 7. 下载和编译安装Python3.12源码
cd /root/download
wget https://www.python.org/ftp/python/3.12.7/Python-3.12.7.tgz
cd Python-3.12.7
export TCLTK_LIBS="-ltk8.5 -ltkstub8.5 -ltcl8.5" # 解决虽然安装了tk-devel,但_tkinter仍找不到。RHEL7和CentOS7上,开发包未提供tcl.pc和tk.pc文件,需要设置TCLTK_LIBS环境变量,记得Python3.10不用此设置,应该是3.11及以后需要的
./configure --with-openssl=/usr/local/openssl --prefix=/usr/local/python3.12
make
make install
# 检查/usr/local/bin在PATH环境变量中之后,添加下面软链接方便命令python3、pip3直接使用
ln -s /usr/local/python3.12/bin/python3.12 /usr/local/bin/python3
ln -s /usr/local/python3.12/bin/pip3.12 /usr/local/bin/pip3
以上步骤为本人实际使用过程记录,如遇什么问题可评探讨。