我正在創建一個 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
)。