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 的 piprequests 等库能正常使用 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 installaltinstall 会在安装时避免创建 pythonpython3 这样的覆盖性符号链接,从而保护系统的默认 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. 创建无版本号的 pythonpip 软链接(可选但推荐):

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

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

    这一步让 pythonpip 命令直接指向 alternatives 管理的 python3pip3,实现了统一。

第四步:验证安装成果

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

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 的下载速度将得到质的飞跃。

相关推荐
yaoh.wang5 小时前
力扣(LeetCode) 13: 罗马数字转整数 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·跳槽
石像鬼₧魂石5 小时前
如何配置Fail2Ban的Jail?
linux·学习·ubuntu
小鸡吃米…6 小时前
Python PyQt6教程七-控件
数据库·python
椰子今天很可爱6 小时前
五种I/O模型与多路转接
linux·c语言·c++
Lueeee.6 小时前
Linux kernel Makefile 语法
linux
1916zz7 小时前
Extreme programing 方利喆 _ 江贤晟
python
长安牧笛7 小时前
智能鞋柜—脚气终结者,内置温湿度传感器和紫外线灯,晚上回家,把鞋放进去,自动检测湿度,湿度超标就启动烘干+紫外线杀菌,第二天穿鞋干燥无异味。
python
weixin_457760007 小时前
PIL库将图片位深度是1、8、32统一转换为24的方法
python
Lucky高8 小时前
Pandas库入门
python·pandas
小鸡吃米…8 小时前
Python PyQt6教程三-菜单与工具栏
开发语言·python