CentOS 7/8/9 一键安装 Python 3.10+ 并配置默认版本

第一步:准备工作 ------ 安装编译依赖

根据你的 CentOS 版本,选择执行以下命令之一:

  • 对于 CentOS 7 (使用 yum):

    bash 复制代码
    sudo yum groupinstall -y "Development Tools"
    sudo yum install -y openssl-devel bzip2-devel libffi-devel zlib-devel readline-devel sqlite-devel gdbm-devel xz-devel
  • 对于 CentOS 8 / 9 (使用 dnf):

    bash 复制代码
    sudo dnf groupinstall -y "Development Tools"
    sudo dnf install -y openssl-devel bzip2-devel libffi-devel zlib-devel readline-devel sqlite-devel gdbm-devel xz-devel

小贴士: openssl-devel 至关重要,它确保了 Python 的 pip 和 requests 等库能正常使用 HTTPS。libffi-devel 则是很多 C 扩展模块所必需的。

第二步:下载、编译并安装 Python 3.10+

我们将从 Python 官网下载最新稳定版的源码,并进行编译安装。这里以 Python 3.10.12 为例,你可以访问 Python 官网 获取最新的下载链接。

  1. 进入一个临时目录并下载源码:

    bash 复制代码
    cd /tmp
    wget https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tgz
  2. 解压并进入源码目录:

    bash 复制代码
    tar -xf Python-3.10.12.tgz
    cd Python-3.10.12
  3. 配置编译选项(关键步骤):

    我们将 Python 安装到 /usr/local/python3.10 目录下,实现与系统 Python 的隔离。同时启用优化选项,提升运行性能。

    bash 复制代码
    ./configure --prefix=/usr/local/python3.10 --enable-optimizations --with-ssl
    • --prefix=...: 指定安装路径,这是一个好习惯。
    • --enable-optimizations: 启用性能优化,编译出的 Python 解释器会更快(推荐)。
    • --with-ssl: 确保编译时链接到系统的 SSL 库。
  4. 开始编译和安装:

    使用 -j 参数可以充分利用多核 CPU 加速编译过程。

    bash 复制代码
    # 使用 nproc 自动获取 CPU 核心数进行编译
    make -j$(nproc)
    
    # 使用 altinstall 安装,这是安全的关键!
    sudo make altinstall

    重点强调: 请务必使用 make altinstall 而非 make install。altinstall 会在安装时避免创建 python、python3 这样的覆盖性符号链接,从而保护系统的默认 Python 不被干扰。

第三步:配置系统默认 Python 和 pip(核心环节)

现在 Python 3.10 已经安装好了,但系统还"不认识"它。我们将使用 CentOS 强大的 alternatives 工具来管理版本,实现平滑切换。

  1. 为 python3 命令注册新版本:

    bash 复制代码
    sudo alternatives --install /usr/bin/python3 python3 /usr/local/python3.10/bin/python3.10 1
    • --install: 注册一个新的可选项。
    • /usr/bin/python3: 通用链接的路径。
    • python3: 链接的家族名称。
    • /usr/local/python3.10/bin/python3.10: 我们新安装的 Python 的实际路径。
    • 1: 优先级,数字越大优先级越高。后续如果安装其他版本,可以设置更高的数字。
  2. 配置 python3 的默认版本:

    bash 复制代码
    sudo alternatives --config python3

    执行后,你会看到一个交互式菜单,列出所有已注册的 python3 版本。输入我们刚刚安装的 Python 3.10 对应的数字,然后回车即可。

    复制代码
    There are 2 programs which provide 'python3'.
    
      Selection    Command
    -----------------------------------------------
    *+ 1           /usr/bin/python3.6
       2           /usr/local/python3.10/bin/python3.10
    
    Enter to keep the current selection[+], or type selection number: 2
  3. 为 pip3 命令重复以上操作:

    bash 复制代码
    sudo alternatives --install /usr/bin/pip3 pip3 /usr/local/python3.10/bin/pip3.10 1
    sudo alternatives --config pip3

    同样,在弹出的菜单中选择我们新安装的 pip3.10。

  4. 创建无版本号的 python 和 pip 软链接(可选但推荐):

    在现代开发中,python 通常指向 python3。我们可以创建一个软链接来简化命令。

    bash 复制代码
    sudo ln -sf /usr/bin/python3 /usr/bin/python
    sudo ln -sf /usr/bin/pip3 /usr/bin/pip

    这一步让 python 和 pip 命令直接指向 alternatives 管理的 python3 和 pip3,实现了统一。

第四步:验证安装成果

一切就绪!现在打开一个新的终端会话,验证我们的工作成果。

bash 复制代码
# 检查 Python 版本
python --version
python3 --version

# 预期输出都应该是:
# Python 3.10.12

# 检查 pip 版本
pip --version
pip3 --version

# 预期输出都应该是:
# pip 23.x.x from /usr/local/python3.10/lib/python3.10/site-packages/pip (python 3.10)

如果看到上述输出,恭喜你!你已经成功地在 CentOS 系统上安装并配置了 Python 3.10+,并且系统工具(如 yum/dnf)所依赖的旧版 Python 依然完好无损。

(可选)第五步:配置 pip 国内镜像源

为了提升 pip 安装包的速度,强烈建议配置国内镜像源。

  1. 创建 pip 配置目录:

    bash 复制代码
    mkdir -p ~/.pip
  2. 创建并编辑配置文件:

    bash 复制代码
    vi ~/.pip/pip.conf
  3. 在文件中填入以下内容(以清华大学镜像源为例):

    ini 复制代码
    [global]
    index-url = https://pypi.tuna.tsinghua.edu.cn/simple
    
    [install]
    trusted-host = pypi.tuna.tsinghua.edu.cn

保存后,pip 的下载速度将得到质的飞跃。

相关推荐
xiaoqiMikko7 分钟前
Linux 实战(五):DNS、hosts、CLOSE-WAIT、SSH 权限与改端口 —— 三台真机实测
linux·centos
Linux-lucky11 分钟前
43-Linux学习之旅之Shell 脚本(二)
linux·运维·学习·ubuntu·dash
yv798an22 分钟前
从 OpenSBI 引导到 C++17 异步运行时:自制 RISC-V 嵌入式专有 NAS 踩坑全记录
linux
不悔哥1 小时前
Linux系统编程多线程程序如何安全退出
linux
Fcy6481 小时前
Linux下 数据链路层详解(从以太网到ARP协议)
linux·mac·以太网·数据链路层·arp
砚底藏山河1 小时前
python量化入门:多周期数据对齐统一时间轴
java·数据库·python·金融·maven
毕业设计7032 小时前
(免费领源码)django空气净化器销售系统09218- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
python·scrapy·mysql·pycharm·django·flask·pandas
小小张说故事2 小时前
Python 闭包到底捕获了啥?一个计数器例子讲透,别再背定义了
python
深蓝AI2 小时前
AI Agent 点了发布却超时:一条回执丢失,为什么能造成两篇文章?
人工智能·python
怪奇云呼军3 小时前
教育试听预约后没到课,闪电智能 Voice Agent 如何做分层回访?
人工智能·python·算法·云计算·音视频