更改 Python 的預設版本會破壞 Ubuntu 20.04

更改 Python 的預設版本會破壞 Ubuntu 20.04

我正在創建一個 AMI烏班圖20.04(Focal Fossa),我希望預設的 Python 版本是 3.6。

我安裝了 Python 3.6,也是正確的 pip,然後設定替代方案,如下所示:

update-alternatives --install \
  /usr/bin/python3 \
  python3 \
  /usr/bin/python3.6 \
  10

但後來我遇到了許多與以下相關的問題CPython軟體包,例如python3-apt(apt_pkg, apt_inst), netifaces,以及可能還有更多我還沒發現的軟體包。

它們都位於/usr/lib/python3/dist-packages且套件名稱採用以下格式:

{name}.cpython-38-x86_64-linux-gnu.so

這是有道理的,因為 Ubuntu 20.04 的預設 Python 版本是 Python 3.8。

谷歌搜尋的直接解決方案是像這樣連結名稱:

ln -s {name}.cpython-38-x86_64-linux-gnu.so {name}.so

IE:

ln -s apt_pkg.cpython-38-x86_64-linux-gnu.so apt_pkg.so
ln -s netifaces.cpython-38-x86_64-linux-gnu.so netifaces.so

我嘗試在預設Python版本為3.6時重新安裝相關套件(apt install --reinstall python3-apt),但沒有成功,而且這種連結檔案的解決方案*.so不可擴充!

有沒有辦法讓Python 3.6與系統預設的CPython套件一起運作?

答案1

正如您所發現的,系統確實依賴系統Python 的版本與預期一致。如果您確實想要一個帶有 Python 3.6 的系統,那麼最好的選擇是找到一個使用 Python 3.6 的(理想情況下仍然受支援的)版本:在您的情況下,Ubuntu 18.04。

如果您想為 AMI 上執行的程式提供 Python 3.6,您可以考慮使用虛擬環境,而不是取代系統 Python。pyenv是一個很好的起點。

答案2

像管理您附近的實體機一樣管理雲端上任何電腦的環境。如果您使用 Ubuntu 20.x 並且預設安裝的 Python 版本是 3.8,但您需要 Python v3.6,請根據需要安裝虛擬環境。你可以用 來做到這一點pyenv。您目前正在做的事情是緩慢地破壞您的預設 Python 安裝,這將對該電腦上的無數軟體包(基於雲端或非雲端)產生所有不利影響。

我添加一個教學如果您有興趣的話,我寫過有關 Python 環境虛擬化的文章(特別是在 參考資料pyenv)。

相關內容