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.pswp.cn/bicheng/94470.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/94470.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/94470.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于RBF-GA的鋁/鎂異材FSLW工藝參數優化研究

課題&#xff1a;基于RBF-GA的鋁/鎂異材FSLW工藝參數優化研究 1. 引言 (Introduction) 研究背景與意義&#xff1a; 輕量化需求&#xff1a;鋁&#xff08;Al&#xff09;和鎂&#xff08;Mg&#xff09;合金是航空航天、新能源汽車等領域實現輕量化的關鍵材料。實現二者的可靠…

【Prometheus】Prometheus監控Docker實戰

&#x1f47b;創作者&#xff1a;丶重明 &#x1f47b;創作時間&#xff1a;2025年8月23日 &#x1f47b;擅長領域&#xff1a;運維 目錄前言什么是Prometheus和cAdvisorPrometheuscAdvisor部署操作部署cAdvisor部署Prometheus指標說明cpu相關指標內存相關指標磁盤相關指標網絡…

2.7 提示詞調優編碼實戰(二)

目錄 四,提示詞模版優化 - 格式化 4.1 代碼示例 4.2 任務描述 4.3 模型輸出格式化 4.4 用戶輸入 4.5 輸出結果 四,提示詞模版優化 - 格式化 在簡單提示詞的基礎上,我們對提示詞模版中各部分進行格式化。包括任務描述增加了相應的字段。 同時對輸出增加了更多的定義和…

Kafka如何保證「消息不丟失」,「順序傳輸」,「不重復消費」,以及為什么會發生重平衡(reblanace)

前言 上一篇文章總結了kafka為什么快&#xff0c;下面來總結一下&#xff0c;kafka高頻的常見的問題。內容有點多&#xff0c;全部看完需要有一定的耐心。 kafka如何保證消息不丟失 Producer端 要保證消息不丟失&#xff0c;第一點要做的就是要保證消息從producer端發送到了…

原子操作匯編實現:原理、流程與代碼解析

&#x1f52c; 原子操作匯編實現&#xff1a;原理、流程與代碼解析 引用&#xff1a;VC/C Intel x86 內聯匯編實現 “Interlocked” 原子變量各種操作 &#x1f31f; 引言&#xff1a;原子操作的重要性 在多線程編程中&#xff0c;原子操作是確保數據一致性的關鍵機制。本文…

【WRF理論第十九期】內陸湖泊、水體的處理方式

目錄 WRF 模型中湖泊模擬概述 湖泊模型(Lake Model)集成 新增湖泊數據支持(如 WUDAPT + MODIS) LAKE_DEPTH Noah-MP + 湖泊模型聯合使用 namelist.input 配置說明 WRF 代碼更新 參考 論壇-WRF 湖泊模型(WRF-Lake model)與 SST 更新 WRF 模型中湖泊模擬概述 湖泊模型(La…

【滲透測試】SQLmap實戰:一鍵獲取MySQL數據庫權限

注&#xff1a;所有技術僅用于合法安全測試與防御研究&#xff0c;未經授權的攻擊行為屬違法犯罪&#xff0c;將承擔法律責任。一、SQLmap常規用法注意存放路徑&#xff1a;C:\Users\neo\AppData\Local\sqlmap\output1、列出詳細過程和數據庫列表sqlmap -u http://192.168.61.2…

LeetCode 第464場周賽 第三天

1. 3658 奇數和與偶數和的最大公約數&#xff08;歐幾里得&#xff09; 鏈接&#xff1a;題目鏈接 題解&#xff1a; 題解時間復雜度O(logmin(a, b))&#xff1a; 獲得前n個奇、偶數的總和&#xff0c;由于數列為等差數列&#xff0c;等差數列和公式&#xff1a;(a1 an) * n …

IntelliJ IDEA 集成 ApiFox 操作與注解規范指南

一、IDEA裝入Apifox 1.安裝Apifox Helper 說明:在 IntelliJ IDEA 中安裝 ApiFox Helper 插件。 2.打開Apifox 說明:點擊 設置,在菜單中選擇 API訪問令牌。在彈出的窗口中輸入任意名稱,并選擇令牌的有效期(為了方便,我這里選擇了 無期限)。生成令牌后,由于 令牌只能復…

C++---雙指針

在C編程中&#xff0c;雙指針算法是一種高效的解題思路&#xff0c;其核心是通過設置兩個指針&#xff08;或索引&#xff09;遍歷數據結構&#xff08;如數組、鏈表、字符串等&#xff09;&#xff0c;利用指針的移動規則減少無效操作&#xff0c;從而將時間復雜度從暴力解法的…

【LLM】GLM-4.5模型架構和原理

note 文章目錄note一、GLM-4.5模型二、Slime RL強化學習訓練架構Reference一、GLM-4.5模型 大模型進展&#xff0c;GLM-4.5技術報告,https://arxiv.org/pdf/2508.06471&#xff0c;https://github.com/zai-org/GLM-4.5&#xff0c;包括GLM-4.5&#xff08;355B總參數&#xff…

LLM 中增量解碼與模型推理解讀

在【LLM】LLM 中 token 簡介與 bert 實操解讀一文中對 LLM 基礎定義進行了介紹&#xff0c;本文會對 LLM 中增量解碼與模型推理進行解讀。 一、LLM 中增量解碼定義 增量解碼&#xff08;Incremental Decoding&#xff09;是指在自回歸文本生成過程中&#xff0c;模型每次只計…

1.Spring Boot:超越配置地獄,重塑Java開發體驗

目錄 一、Spring框架&#xff1a;偉大的基石 歷史背景與挑戰 Spring的革命性貢獻 新的挑戰&#xff1a;配置地獄 二、Spring Boot&#xff1a;約定大于配置的革命 四大核心特性 1. 快速創建獨立應用 2. 自動配置&#xff1a;智能化的魔法 3. 起步依賴&#xff1a;依賴管…

assert使用方法

assert 是 Python 中用來進行 調試 和 驗證 的一個關鍵字&#xff0c;它用于測試一個 條件表達式 是否為真。如果條件為假&#xff0c;assert 會拋出一個 AssertionError 異常&#xff0c;通常帶有錯誤信息。語法&#xff1a;assert condition, "Error message"condi…

【實習總結】快速上手Git:關鍵命令整理

目錄 git的四大工作區域 git首次配置 克隆遠程倉庫 提交代碼到遠程倉庫 查看文件狀態&#xff08;可選&#xff09; 添加文件到暫存區 將暫存區的內容提交到本地倉庫 將本地的提交上傳到遠程倉庫 拉取并合并代碼 第一種方式 第二種方式 分支管理 查看與創建分支 …

02-開發環境搭建與工具鏈

第2課&#xff1a;開發環境搭建與工具鏈 &#x1f4da; 課程目標 掌握DevEco Studio的下載、安裝和配置熟悉HMS Core&#xff08;華為移動服務&#xff09;的使用了解鴻蒙模擬器與真機調試環境掌握必備開發工具的使用 &#x1f6e0;? DevEco Studio環境搭建 2.1 下載與安裝…

刪掉一個元素以后全為1的最長子數組-滑動窗口

1493. 刪掉一個元素以后全為 1 的最長子數組 - 力扣&#xff08;LeetCode&#xff09; Solution #include<iostream> #include<vector> using namespace std;class Solution { public://滑動窗口//動態維護一個窗口&#xff0c;窗口內只能有1個0&#xff0c;記錄窗…

【計算機網絡 | 第8篇】編碼與調制

文章目錄通信系統中的編碼與調制&#xff1a;從信道基礎到信號傳輸技術一、信道與通信電路&#x1f342;二、三種基本通信方式&#x1f4d6;1. 單向通信&#xff08;單工通信&#xff09;2. 雙向交替通信&#xff08;半雙工通信&#xff09;3. 雙向同時通信&#xff08;全雙工通…

當AI遇上終端:Gemini CLI的技術魔法與架構奧秘

"代碼不僅僅是指令的集合&#xff0c;更是思想的載體。當AI與終端相遇&#xff0c;會碰撞出怎樣的火花&#xff1f;" 在這個AI技術日新月異的時代&#xff0c;Google推出的Gemini CLI無疑是一顆璀璨的明星。它不僅僅是一個命令行工具&#xff0c;更是一個將人工智能無…

ViLU: Learning Vision-Language Uncertainties for Failure Prediction

研究方向&#xff1a;Image Captioning1. 論文介紹本文提出ViLU&#xff08;Vision-Language Uncertainties&#xff09;&#xff0c;一個用于學習視覺語言不確定性量化&#xff08;UQ&#xff09;和檢測視覺語言模型故障的事后框架。使用VLMs進行量化&#xff08;UQ&#xff0…