如何在Debian上使python
成為python3
系統範圍的別名
我的 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 的軟體包都必須明確使用
python2
或python3
在它們的 shebangs 中,因此您不會遇到由來自官方儲存庫的軟體包引起的問題(在 Debian 11 及更高版本中,不包括目前是不穩定的和實驗性的,因為那些仍然有尚未清理的舊 Python 包)。