当前位置: 首页 > news >正文

AlmaLinux 上 Python 3.6 切换到 Python 3.11

在 AlmaLinux 上将默认的 Python 3.6 升级或切换到 Python 3.11 是一个常见的需求。

请注意,直接替换系统自带的 Python 3.6 是非常危险的,因为许多系统工具(如 yum/dnf 包管理器)都依赖于它,盲目删除或修改可能会导致系统崩溃。

推荐的做法是: 保留系统原有的 Python 3.6,同时安装 Python 3.11,并通过配置 alternatives 工具或使用虚拟环境 (venv) 来管理默认版本。

以下是两种最安全、最常用的方法。

1. 方法一:使用 Software Collections (SCL) 仓库(推荐且简单)

Red Hat 及其衍生版(如 AlmaLinux)提供了 SCL 仓库,它可以让你安装和维护多个版本的软件而不会影响系统默认版本。

  1. 启用 SCL 仓库
    AlmaLinux 可能已经预装了 scl 工具。首先安装 SCL 仓库配置。

    sudo dnf install almalinux-release-scl
  2. 安装 Python 3.11
    搜索可用的 Python 版本,然后安装 3.11 及其开发工具包。

    sudo dnf search rh-python
    sudo dnf install rh-python311 rh-python311-python-devel
  3. 启用 Python 3.11
    安装后,它不会自动成为默认版本。你需要在每次需要时通过 scl enable 命令来启动一个包含 Python 3.11 环境的 shell。

    scl enable rh-python311 bash

    现在,在这个新的 shell 中,python --version 和 pip --version 都会指向 3.11。

    $ python --version
    

    Python 3.11.x

  4. (可选)永久为您的用户启用
    如果您希望每次登录都默认使用 Python 3.11,可以将它添加到您的 shell 配置文件中。

    echo "source scl_source enable rh-python311" >> ~/.bashrc

    然后重新加载配置:

    source ~/.bashrc

优点:非常安全,与系统环境完全隔离,管理简单。
缺点:需要额外的命令来启用环境(但可以配置为自动启用)。

2. 方法二:从源码编译安装并配置 alternatives

这种方法更灵活,可以安装任何版本,但步骤稍复杂。

  1. 安装编译依赖

    sudo dnf groupinstall "Development Tools"
    sudo dnf install openssl-devel bzip2-devel libffi-devel sqlite-devel readline-devel
  2. 下载并编译 Python 3.11

    # 下载源码包
    wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz
    # 解压
    tar xvf Python-3.11.9.tgz
    # 进入目录
    cd Python-3.11.9
    # 配置编译选项(--prefix=/usr/local 是标准位置)
    ./configure --enable-optimizations --prefix=/usr/local
    # 编译并安装 (使用 -j 参数加速编译,数字为CPU核心数)
    sudo make -j 4
    sudo make altinstall

    重要:使用 make altinstall 而不是 make install,以避免覆盖系统默认的 python3 二进制文件。

  3. 验证安装
    此时,系统会同时存在两个版本:

    • /usr/bin/python3 (系统自带的 3.6)

    • /usr/local/bin/python3.11 (新安装的 3.11)

    直接运行 python3.11 和 pip3.11 来使用新版本。

    python3.11 --version
  4. (可选)使用 alternatives 配置默认版本
    如果你想将系统范围的 python3 命令指向 3.11(有一定风险,请确保你的关键系统工具不依赖 3.6),可以使用 alternatives 工具。

    # 将 python3.11 加入 alternatives 列表
    sudo alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.11 311
    # 交互式选择默认版本
    sudo alternatives --config python3

    运行 sudo alternatives --config python3 后,会列出所有可用的版本,输入对应的选择编号即可切换。

    警告:执行此操作后,请务必测试 sudo dnf update 等命令是否正常。因为 DNF 是用 Python 写的,如果与新版 Python 不兼容会出错。如果出现问题,只需再次运行 sudo alternatives --config python3 并选择回原来的 Python 3.6 即可。

3. 方法三:使用虚拟环境(Venv) - 最安全的方法

这其实不是切换系统版本,而是为每个项目单独指定 Python 版本。这是 Python 开发的最佳实践。

  1. 首先,按照方法二安装 python3.11 和 pip3.11

  2. 为你的项目创建虚拟环境,并直接指定使用 Python 3.11:

    # 直接使用 python3.11 解释器创建虚拟环境
    python3.11 -m venv my_project_venv
  3. 激活虚拟环境:

    source my_project_venv/bin/activate
  4. 激活后,命令行提示符会变化,所有 python 和 pip 命令都会指向虚拟环境内的 3.11 版本,与系统完全隔离。

    (my_project_venv) $ python --version
    Python 3.11.9
  5. 退出虚拟环境:

    deactivate

优点:绝对安全,项目之间环境隔离,无任何冲突。
缺点:需要为每个项目单独设置。

4. 总结与建议

方法优点缺点适用场景
SCL (方法一)安全、简单、官方支持需要手动启用环境大多数情况下的首选,尤其是服务器环境
源码编译 (方法二)灵活,可安装任意版本步骤复杂,有潜在风险需要高度定制化或特定版本的高级用户
虚拟环境 (方法三)最安全,项目隔离每个项目都需配置Python 开发的最佳实践,强烈推荐

最终建议:

    <1> 如果你只是想运行一些需要 Python 3.11 的应用或脚本,使用方法一 (SCL)

    <2> 如果你是一名开发者,请务必使用方法三 (虚拟环境) 来管理你的项目,并使用方法二来安装你需要的 Python 版本作为虚拟环境的基础解释器。

    <3> 尽量避免使用方法二中的 alternatives 来更改全局 python3 命令,除非非常清楚自己在做什么并且能承担后果。

http://www.dtcms.com/a/348645.html

相关文章:

  • EP02:【DA】数据分析的价值创造与应用流程
  • 基于SpringBoot的新能源汽车租赁管理系统【2026最新】
  • 【Linux文件系统】Linux文件系统与设备驱动
  • MySQL数据库精研之旅第十一期:打造高效联合查询的实战宝典(二)
  • python中的filter函数
  • 学习做动画1.简易行走
  • 人工智能之数学基础:离散型随机变量
  • 源滚滚React消息通知框架v1.0.2使用教程
  • 管道符在渗透测试与网络安全中的全面应用指南
  • sim2real!so-arm100 机械臂 Mujoco 仿真与实机控制
  • HbuilderX下载与安装
  • python多线程操作,threading库详解(附实例演示)
  • No static resource报错
  • Linux 系统管理核心概念与常用命令速查
  • Baumer高防护相机如何通过Tiny-YOLO单类模型实现人体跌倒检测与跟踪(C#代码UI界面版)
  • [Windows] PDF-XChange Editor Plus官方便携版
  • 鸿蒙中点击完成时延分析
  • 通过python程序将实时监测数据写入excel软件进行保存是常用和非常实用的功能,本文教会大家怎么去搞定此功能
  • LangChain框架入门19: 构建你的第一个 AI 智能体
  • HTTP报文格式详解:从历史演进到现代Web的通信基石
  • Python-鸭子类型
  • DBeaver连接SQL Server时添加驱动后仍提示找不到驱动的解决方法
  • 校园跑腿小程序源码 _ 跑腿便利店小程序 含搭建教程
  • 小程序全局状态管理:使用MobX进行跨组件数据共享详解(九)
  • c++基础知识入门
  • 【AI智能体】Dify 搭建业务单据差异核对助手实战详解
  • kubernetes中的认证和授权
  • Python 变量 (variables)、对象 (objects) 和引用 (references)
  • 第1章:量子涟漪
  • 双网卡并行访问:解决有线局域网与无线互联网共存时的路由冲突问题