在 Ubuntu 上更新 Python 並不總是像在 GUI 中點擊更新那樣順利——尤其是因為 Ubuntu 出於穩定性考慮,傾向於保留其預設的 Python 版本。如果您喜歡新功能、安全補丁,或者只是厭倦了運行過時的 Python 版本,本指南應該可以幫助您在不破壞所有內容的情況下安裝最新版本。通常,只需新增一個受信任的倉庫,輸入幾個命令,然後就可以看到新的 Python 了。不知道為什麼,但有時您按照這些步驟操作後,它仍然無法正確更新,這可能會讓人有點沮喪。不過,堅持不懈終有回報。

如何在 Ubuntu 上更新 Python

新增正確的儲存庫以取得較新的 Python 版本

Ubuntu 的預設軟體倉庫往往落後於最新的 Python 版本。要獲取最新的穩定版本,通常可以添加deadsnakes PPA。它值得信賴、廣受歡迎,並且包含許多最新的 Python 版本。在某些情況下,您可能會收到 PPA 不安全之類的警告——只需仔細檢查您是否訪問的是官方網站,而不是騙局網站。新增後,您的系統將更容易接受較新的 Python 版本。

逐步安裝較新的 Python

  • 打開終端機。通常如此Ctrl + Alt + T。當然,因為 Ubuntu 有時必須讓它變得非常棘手。
  • 檢查你目前的 Python 版本-在終端機中輸入:python3 --version。這會為你在操作之前提供一個基準。
  • 加入 deadsnakes 倉庫。運行:sudo add-apt-repository ppa:deadsnakes/ppa。出現提示時,按Enter。有時添加倉庫需要幾秒鐘,尤其是在你的網速不是很快的情況下。
  • 更新你的軟體包列表。點選:sudo apt update。這會告訴你的系統提取最新的軟體包信息,包括新的 Python 版本。
  • 安裝最新的 Python 版本。假設你想要 Python 3.12,運行:sudo apt install python3.12。如果你想確保安裝的是你想要的版本,請檢查確切的軟體包名稱——有時它只是python3.x
  • 驗證安裝python3 --version再次運行:。如果一切順利,它會顯示 Python 3.12(或最新版本)。如果沒有,可能是你的預設版本仍然指向舊版本。

將新的 Python 版本設為終端機的預設版本(可選但建議)

這部分操作讓許多人感到困惑,因為 Ubuntu 為了穩定性預設停留在舊版本。要切換,請使用update-alternatives。運行:

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1

然後,檢查有哪些可用選項:

sudo update-alternatives --config python3

這將允許您選擇首選版本,就像切換預設瀏覽器或編輯器一樣。並非所有系統都能無縫切換,因此如果出現問題,請做好一些調整的準備——尤其是當某些系統進程依賴特定的 Python 版本時。

額外提示和常見問題

  • 升級 Python 之前,請務必備份所有專案或虛擬環境。這可能會造成意外中斷。
  • 如果一切似乎停滯,請透過檢查/etc/apt/sources.list.d/deadsnakes-ubuntu-ppa.list仔細檢查 deadsnakes repo 是否確實已新增。
  • 如果多個 Python 版本共存,使用虛擬環境(venv)有助於防止衝突;總的來說這是一個好主意。
  • 有時,pip 在更新後可能會變得混亂。請確保使用新版本的 Python pip(例如python3.12 -m pip install package_name)安裝軟體包,以避免混淆。

包起來

在 Ubuntu 上取得最新的 Python 並非易事,也並非完美無缺。加上 deadsnakes 倉庫,更新並安裝所需的版本通常就能解決問題——前提是你要有耐心和細心。不過要注意的是,除非你切換版本,否則你的系統可能還是會預設使用舊版 Python。但總的來說,這應該比標準倉庫提供的版本更新得多。

常見問題

為什麼要費心更新 Python?

因為有時你需要那些酷炫的新功能、安全補丁,或只是運行新函式庫的能力。從長遠來看,舊版的 Python 可能會很麻煩。

如果更新仍然不起作用怎麼辦?

理想情況下,請仔細檢查您是否添加了正確的倉庫並運行了sudo apt update。此外,請務必驗證已安裝的內容python3 --version—有時即使安裝後,您的系統仍會預設使用舊版本。在這種情況下,請查看update-alternatives

我可以一次安裝多個版本嗎?

當然可以。只要記住在執行腳本時使用虛擬環境或指定完整的 Python 二進位路徑即可。如果不小心混淆它們,可能會帶來一些麻煩。