centos一键安装python
我上周在阿里云上开了台新CentOS 7.9,键安装Python时差点砸键盘。键安系统自带的键安Python 2.7早该退休了,可编译安装3.12要装依赖、键安配路径、键安改软链接——每一步都能踩坑。键安后来我把整个流程写成了个shell脚本,键安现在重装系统只需要跑一条命令。键安
脚本的键安核心逻辑很简单:先检测系统里有没有装编译工具,没有就yum装gcc和make,键安然后从官网下载Python源码包,键安解压、键安configure、键安make install。键安但细节才是键安魔鬼——比如CentOS默认的openssl-devel版本太老,Python 3.12的ssl模块会编译失败。所以脚本里我强制先升级openssl,用`yum install -y openssl11-devel`,再在configure时指定`--with-openssl=/usr/local/openssl11`。
写脚本时最烦的是不同CentOS版本的差异。7和8的包管理器命令不同,8以上用dnf,但为了兼容,脚本开头先判断`cat /etc/redhat-release`,然后设置变量PM="yum"或"dnf"。还有个小坑:CentOS 7的gcc默认是4.8.5,编译Python 3.12会报错说C99不支持,所以得先装`centos-release-scl`再用`scl enable devtoolset-9`临时切到gcc 9。
实际用起来,脚本跑完大概要8分钟——下载源码占一半时间。我加了`--progress`参数,让wget显示进度条,不然干等容易焦虑。安装路径我硬编码在`/usr/local/python3`,然后软链接到`/usr/bin/python3`。这里有个选择:要不要覆盖系统的python3?如果你系统里跑着yum或firewalld依赖python3,覆盖会出问题。所以我脚本里默认装到独立目录,只在最后提示你手动加PATH。
对了,pip也要一起处理。新版本的ensurepip模块能直接装pip,但国内网络拉pip源很慢。我脚本里装完python后立刻执行`pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/`,把源切到阿里云。这步不加的话,你后面装第三方库会等到怀疑人生。
最后贴个用法。把脚本存成`install_python.sh`,然后`chmod +x install_python.sh && ./install_python.sh`。它会自动检测你是否用root跑,没用就提示sudo。脚本里所有输出都带时间戳,方便你排查问题。我测试了三次,第一次卡在openssl路径上,第二次是gcc版本,第三次才全绿。你要是遇到别的报错,多半是缺少某个系统库——脚本里我预装了一堆:libffi-devel、zlib-devel、bzip2-devel、ncurses-devel、sqlite-devel。这些不装全,Python装完很多标准库模块是废的。
现在这台服务器上跑着FastAPI应用,Python 3.12.2稳定运行两周没崩过。你要是也受够了手动装Python的折磨,直接拿去用吧。
