Linux 编译安装 Python 3.12.10(多版本共存,不破坏系统Python)

前言

很多Linux服务器自带Python版本较低,无法满足新项目开发需求。直接替换系统Python会导致yum、apt等系统工具异常。本文采用源码编译方式独立安装 Python 3.12.10,与系统Python、已安装的Python3.9等版本共存,通过独立软链接区分版本,安全稳定。

环境适用:CentOS 7/8/Stream、RockyLinux、Ubuntu、Debian

安装方式:源码编译安装

安装目录:/usr/local/python312

调用命令:python312、pip312

一、安装编译所需依赖包

编译Python源码必须提前安装开发依赖,缺少依赖会出现编译失败、SSL模块缺失、pip不可用等问题。

CentOS / Rocky Linux(yum)

bash 复制代码
yum install -y gcc gcc-c++ make zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

Ubuntu / Debian(apt)

bash 复制代码
apt update
apt install -y gcc g++ make libz-dev libbz2-dev libssl-dev libncurses-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev liblzma-dev libffi-dev

二、下载 Python 3.12.10 源码包

进入源码存放目录 /usr/local/src,下载源码。提供官方源与清华大学镜像源,国内服务器推荐清华镜像,速度更快。

bash 复制代码
cd /usr/local/src
# 清华镜像(推荐国内服务器)
wget https://mirrors.tuna.tsinghua.edu.cn/python/3.12.10/Python-3.12.10.tgz

# 官方源(海外服务器可选)
# wget https://www.python.org/ftp/python/3.12.10/Python-3.12.10.tgz

三、解压源码包并进入目录

bash 复制代码
tar -zxvf Python-3.12.10.tgz
cd Python-3.12.10

四、配置编译参数

使用./configure指定安装路径,取消 --enable-optimizations,该参数会增加编译耗时,部分服务器容易出现编译卡死、报错。

bash 复制代码
./configure --prefix=/usr/local/python312

参数说明:

--prefix=/usr/local/python312:指定程序安装目录,所有文件统一存放于此,方便后续卸载、版本管理。

五、编译与安装

bash 复制代码
make && make install

⏱ 编译耗时根据服务器CPU性能决定,低配置云服务器可能需要3~10分钟,请耐心等待,不要中断操作。

六、创建全局软链接(多版本共存关键)

我们不覆盖系统python、python3命令,新建独立命令 python312、pip312,和现有的python39、系统python互不冲突。

bash 复制代码
ln -s /usr/local/python312/bin/python3.12 /usr/bin/python312
ln -s /usr/local/python312/bin/pip3.12 /usr/bin/pip312

七、验证安装结果

执行下面命令查看版本,输出版本号即代表安装成功。

bash 复制代码
python312 -V
pip312 -V

预期输出:

复制代码
Python 3.12.10
pip 24.2 from /usr/local/python312/lib/python3.12/site-packages/pip (python 3.12)

八、优化配置(推荐执行)

1. pip 设置国内清华源,加速第三方库下载

bash 复制代码
pip312 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

2. 简单使用示例

bash 复制代码
# 启动python3.12交互环境
python312

# 安装第三方包
pip312 install requests

# 运行python脚本
python312 test.py

九、常见问题汇总

问题1:CentOS7 编译后pip无法使用,提示缺少SSL模块

原因:Python3.12要求OpenSSL版本 ≥1.1.1,CentOS7系统自带OpenSSL 1.0.2无法满足需求,需要手动升级OpenSSL再重新编译Python。

问题2:make编译报错、缺少模块

解决方案:确认第一步所有依赖包完整安装,清理编译缓存后重新编译

bash 复制代码
make clean
./configure --prefix=/usr/local/python312
make && make install

问题3:如何卸载Python3.12.10

无需复杂卸载工具,直接删除目录与软链接即可:

bash 复制代码
rm -rf /usr/local/python312
rm -f /usr/bin/python312
rm -f /usr/bin/pip312

十、多版本Python共存说明

如果你服务器上同时存在多个Python版本,调用区分如下:

bash 复制代码
python39   # Python3.9.18
python312  # Python3.12.10
python3    # 系统自带Python3(如有)

如果你想要,我可以再给你增加一键自动化Shell脚本完整版,直接复制运行全自动安装;或者调整文章排版,适配Typecho、Hexo、WordPress博客格式。

相关推荐
0+1118 小时前
Linux --从 poll 到 epoll多路转接
linux·服务器·1024程序员节
青瓦梦滋8 小时前
WebSocket协议
linux·服务器·网络·c++·websocket·网络协议·http
桌面运维家9 小时前
旧电脑跑不动课程软件,VDI云桌面怎样接着用?
运维·服务器·虚拟化·pve·vdi·云桌面
zhang133830890759 小时前
传统机械三杯式风速传感器易磨损冻堵?CG-88金属超声波风速风向传感器给出免运维方案
运维·服务器·网络·人工智能·自动化
知已难寻9 小时前
第 2 篇 · 云的地基:服务器、存储、网络三大基础设施
运维·服务器·网络·云原生·云计算·负载均衡·1024程序员节
wangchunyu1149 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
2501_9445215911 小时前
Immer 跨端三方库仓颉适配全流程
python·eclipse·django
信誓旦旦的程序猿11 小时前
【Python量化实战宝典 #26】止损与回撤控制手册:移动止损、最大回撤(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
2601_9498477511 小时前
bcrypt.js 跨端三方库仓颉适配全流程
linux·运维·ubuntu
m0_6399069411 小时前
Linux 操作系统入门:目录结构、服务排查常用命令、Shell 脚本基础
linux·运维·后端