Debian

如何在Debian上使python成為python3系統範圍的別名

  • September 13, 2021

我的 Debian 測試系統的最新更新刪除了 Python 版本 2,我只安裝了 Python 3,帶有python3. 不再有任何名為python. 這會導致多個腳本失敗,包括與 Python 3 兼容的腳本。

我很想知道將全域配置python為別名的正確方法是什麼python3

一個骯髒的解決方案是手動執行類似的操作sudo ln -s /usr/bin/python{3,},但我擔心這可能對未來的 APT 更新(或者如果稍後重新安裝 Python 2)不可靠。另一種選擇是設置別名,但它只適用於我的使用者,而不適用於整個系統。

我還注意到,在 Ubuntu 上有一個包python-is-python3可以做到這一點,但在 Debian 上沒有這樣的包。

看起來 Debian 現在自己發布了python-is-python3(在 Debian 11 及更高版本中),所以問題的前提不再成立,您可以:sudo apt update && sudo apt install python-is-python3.

如果您想堅持/usr除此之外的所有內容都/usr/local應該來自一個包的規則,我實際上會下載python-is-python3並安裝它。它只提供/usr/bin/python符號連結和所需的文件,它的包關係在未來不太可能引起問題。

別名對腳本的 shebang 沒有幫助,並且鑑於 Python 包不使用替代方案,創建自己的替代方案(update-alternatives等)不會是一個可靠的解決方案。

如果您的腳本使用/usr/bin/env python,您可以手動添加連結/usr/local/bin

無論您決定做什麼,從現在開始,Debian 中依賴 Python 的軟體包都必須明確使用python2python3在它們的 shebangs 中,因此您不會遇到由來自官方儲存庫的軟體包引起的問題(在 Debian 11 及更高版本中,不包括目前是不穩定的和實驗性的,因為那些仍然有尚未清理的舊 Python 包)。

引用自:https://unix.stackexchange.com/questions/609855