Arch Linux安裝多重Python版本,使其共存

Install multiple Python versions on Arch Linux.

有些用Python開發的專案不只是限定套件版本,還限定Python版本的說。可是Arch Linux本身是滾動發行版,系統安裝的Python版本前進到宇宙盡頭的速度更新,這樣要跑某些東西就會出問題。

舉例來說,有個專案表明他們使用Python 3.8開發的,如果強行在Python 3.10.9的環境執行該專案,會跳出永遠都解不完的錯誤,一下套件找不到,一下核心傾印…之類的。又Linux系統是很依賴Python的,不可能降級系統的Python。為了讓專案順利執行,唯有安裝多重Python版本,並善用venv功能了。

至於要怎麼安裝嘛,Python官網是有原始碼能下載編譯,不過Arch Linux還有更簡單的方法:從AUR裝。AUR上面會收錄社群維護的舊版本套件,舉凡Python 2到Python 3.9都有,並且一行指令就能自動化安裝。

1. 安裝yay

yay是跟pacman用法類似的套件管理員,專門管理AUR的套件。

如果你還沒裝,推薦現在馬上按照作者教學安裝:

1
sudo pacman -S --needed git base-devel && git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si

2. 從AUR安裝舊版本Python

*可以用指令python --version確認目前系統的Python版本。

  1. AUR首頁鍵入Python版本搜尋。假設要安裝Python 3.8,那麼就是用yay安裝,不用加sudo,一路Enter:
1
yay -S python38
  1. 等待編譯完成後輸入密碼,Python 3.8會自動完成安裝。

2. 切換Python舊版本與使用虛擬環境

使用指令which python3查看系統Python的安裝位置,通常Arch Linux的Python 3是在/usr/bin/python3。執行python3 main.py跑程式的時候,指向的便是該檔案。

至於用AUR安裝的舊版Python也是一樣原理:用which python3.8指令得出安裝位置位於/usr/bin/python3.8。日後要用python3.8跑程式的話,就得改成python3.8 main.py這樣。

有需要的話,我們可以用alias指令暫時將python3變成等同執行python3.8:alias python3=python3.8

如果你的專案指定要用Python 3.8,而且套件也嚴格限定版本的話,為了不讓用Python 3.8的pip安裝的套件跟系統衝突,我們可以利用Python的虛擬環境隔離不同版本的pip套件:

1
2
3
4
5
6
# 安裝venv
sudo pacman -S python-virtualenv
# 在專案目錄用Python 3.8建立虛擬環境venv
python3.8  -m venv venv
# 進入虛擬環境
source venv/bin/activate

進入虛擬環境後pip可能會是舊版,記得先更新一下:

1
pip install --upgrade pip

這樣就能在虛擬環境用pip安裝套件了。注意跑程式還是得用python3.8 main.py來執行,而非python3 main.py;pip安裝套件亦同:python3.8 pip -m install requirements.txt


感謝您的閱讀。歡迎分享Ivon的部落格(ivonblog.com)的文章,引用或轉載請註明文章網址,並遵守創用CC-姓名標示-非商業性-禁止改作 4.0 國際授權條款。如需商業使用請來信告之。

written by human, not by AI

如果本網站文章對您有幫助,歡迎請我喝杯珍珠奶茶。

留言板

點選按鈕,選擇您覺得方便的留言系統。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要登入Github帳號才能留言。支援markdown語法,方便您張貼程式碼,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus投放的廣告。無論有無登入皆可留言。此處留言只有本站參與者看得到。若您選擇以訪客身份匿名留言,就不會收到後續回覆通知。