使用 alternatives 管理/切换 python版本

256 阅读2分钟

如何在Linux系统使用 alternatives 系统来管理默认的 python 指向。

使用 update-alternatives 来更新这些链接。

以下是步骤将默认的 pythonpython3 切换到 python2

root@ubuntu1804:~# ls -la /usr/bin/ | grep python
lrwxrwxrwx  1 root   root          26 Mar 26  2018 dh_pypy -> ../share/dh-python/dh_pypy
-rwxr-xr-x  1 root   root        1056 Apr 16  2018 dh_python2
lrwxrwxrwx  1 root   root          29 Mar 26  2018 dh_python3 -> ../share/dh-python/dh_python3
lrwxrwxrwx  1 root   root          23 Jul  1  2022 pdb2.7 -> ../lib/python2.7/pdb.py
lrwxrwxrwx  1 root   root          23 Jun 29  2022 pdb3.6 -> ../lib/python3.6/pdb.py
lrwxrwxrwx  1 root   root          31 Oct 25  2018 py3versions -> ../share/python3/py3versions.py
lrwxrwxrwx  1 root   root          26 Mar 26  2018 pybuild -> ../share/dh-python/pybuild
lrwxrwxrwx  1 root   root          24 Nov 13  2022 python -> /etc/alternatives/python
lrwxrwxrwx  1 root   root           9 Apr 16  2018 python2 -> python2.7
-rwxr-xr-x  1 root   root     3624880 Jul  1  2022 python2.7
lrwxrwxrwx  1 root   root          33 Jul  1  2022 python2.7-config -> x86_64-linux-gnu-python2.7-config
lrwxrwxrwx  1 root   root          16 Apr 16  2018 python2-config -> python2.7-config
lrwxrwxrwx  1 root   root           9 Oct 25  2018 python3 -> python3.6
-rwxr-xr-x  2 root   root     4530520 Jun 29  2022 python3.6
lrwxrwxrwx  1 root   root          33 Jun 29  2022 python3.6-config -> x86_64-linux-gnu-python3.6-config
-rwxr-xr-x  2 root   root     4530520 Jun 29  2022 python3.6m
lrwxrwxrwx  1 root   root          34 Jun 29  2022 python3.6m-config -> x86_64-linux-gnu-python3.6m-config
lrwxrwxrwx  1 root   root          16 Oct 25  2018 python3-config -> python3.6-config
lrwxrwxrwx  1 root   root          10 Oct 25  2018 python3m -> python3.6m
lrwxrwxrwx  1 root   root          17 Oct 25  2018 python3m-config -> python3.6m-config
lrwxrwxrwx  1 root   root          16 Apr 16  2018 python-config -> python2.7-config
lrwxrwxrwx  1 root   root          29 Apr 16  2018 pyversions -> ../share/python/pyversions.py
-rwxr-xr-x  1 root   root        2971 Jul  1  2022 x86_64-linux-gnu-python2.7-config
lrwxrwxrwx  1 root   root          34 Jun 29  2022 x86_64-linux-gnu-python3.6-config -> x86_64-linux-gnu-python3.6m-config
-rwxr-xr-x  1 root   root        3283 Jun 29  2022 x86_64-linux-gnu-python3.6m-config
lrwxrwxrwx  1 root   root          33 Oct 25  2018 x86_64-linux-gnu-python3-config -> x86_64-linux-gnu-python3.6-config
lrwxrwxrwx  1 root   root          34 Oct 25  2018 x86_64-linux-gnu-python3m-config -> x86_64-linux-gnu-python3.6m-config
lrwxrwxrwx  1 root   root          33 Apr 16  2018 x86_64-linux-gnu-python-config -> x86_64-linux-gnu-python2.7-config
root@ubuntu1804:~#

  1. 首先,您需要添加 python2python3python 的备选选项。
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2

这里的数字1和2表示优先级。这意味着 python3.6 的优先级高于 python2.7

  1. 使用以下命令来切换默认的 python 版本:
sudo update-alternatives --config python

这将会展示一个菜单,让您选择 python 的版本。按照指示,选择您想要的版本,例如 python2.7

请注意:不推荐在一些特定的系统,如Ubuntu 18.04,中更改默认的 python 指向。这是因为系统的一些工具可能依赖于Python3。所以在执行这些操作之前,请确保了解可能的影响和风险。如果你只是为了某个特定的脚本或项目使用Python2,建议在该脚本或项目中明确使用 /usr/bin/python2.7,而不是更改默认链接。