如何在 Ubuntu 20.04 LTS 中将默认 python3 设置为 python 3.9 而不是 python 3.8

sta*_*biz 24 python ubuntu python-3.x

我已经在 Ubuntu 20.04 LTS 中安装了 Python 3.9。现在系统同时拥有Python 3.8和Python 3.9。

# which python
# which python3
/usr/bin/python3
# which python3.8
/usr/bin/python3.8
# which python3.9
/usr/bin/python3.9
# ls -alith /usr/bin/python3
12583916 lrwxrwxrwx 1 root root 9 Jul 19  2021 /usr/bin/python3 -> python3.8
Run Code Online (Sandbox Code Playgroud)

但该pip3命令仍会将所有内容安装到 Python 3.8 目录中。

# pip3 install --upgrade --find-links file:///path/to/directory <...>
Run Code Online (Sandbox Code Playgroud)

我想通过将符号链接 /usr/bin/python3 更新为 /usr/bin/python3.9 来更改默认的 pip3 行为。

怎么做?

# update-alternatives --set python3 /usr/bin/python3.9
This command will not work as expected.
Run Code Online (Sandbox Code Playgroud)

这是 pip3 信息:

# which pip3
/usr/bin/pip3
# ls -alith /usr/bin/pip3
12589712 -rwxr-xr-x 1 root root 367 Jul 13  2021 /usr/bin/pip3
# pip3 -V
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
# 
Run Code Online (Sandbox Code Playgroud)

该alias命令将不起作用:

# alias python3=python3.9
# ls -alith /usr/bin/python3
12583916 lrwxrwxrwx 1 root root 9 Jul 19  2021 /usr/bin/python3 -> python3.8
Run Code Online (Sandbox Code Playgroud)

MrW*_*ide 22

您应该能够使用python3.9 -m pip install <package>特定的 python 版本(在本例中为 3.9)运行 pip。

有关此内容的完整文档位于:https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/

如果你想让 python3 指向 python3.9,你可以使用快速和肮脏的。

alias python3=python3.9
Run Code Online (Sandbox Code Playgroud)

编辑:

试图重现您的问题,

# which python3
/usr/bin/python3
# python3 --version
Python 3.8.10
# which python3.8
/usr/bin/python3.8
# which python3.9
/usr/bin/python3.9
Run Code Online (Sandbox Code Playgroud)

然后更新替代方案,并设置新的优先级:

# sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1
# sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2
# sudo update-alternatives --config python3
There are 2 choices for the alternative python3 (providing /usr/bin/python3).

  Selection    Path                Priority   Status
------------------------------------------------------------
  0            /usr/bin/python3.9   2         auto mode
  1            /usr/bin/python3.8   2         manual mode
* 2            /usr/bin/python3.9   2         manual mode

Press <enter> to keep the current choice[*], or type selection number: 0
Run Code Online (Sandbox Code Playgroud)

检查新版本:

# ls -alith /usr/bin/python3
3338 lrwxrwxrwx 1 root root 25 Feb  8 14:33 /usr/bin/python3 -> /etc/alternatives/python3
# python3 -V
Python 3.9.5
# ls -alith /usr/bin/pip3
48482 -rwxr-xr-x 1 root root 367 Jul 13  2021 /usr/bin/pip3
# pip3 -V
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.9)
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助(在 wsl2 Ubuntu 20.04 LTS 中尝试过)

  • 该命令不起作用“alias python3=python3.9”,执行该命令后,“ls”仍然显示python 3.8。我在帖子中添加了别名命令输出。请帮忙检查一下。 (2认同)

小智 12

更改Python版本:

首先我们需要使用以下命令检查 Python 的版本:sudo ls /usr/bin/python*

然后需要使用此命令对它们进行符号链接:

sudo ln -sf /usr/bin/python3.9 /usr/bin/python3 
Run Code Online (Sandbox Code Playgroud)

当您使用该命令时,它将用作python3.9默认python3.