更新

更新

我想在我的 PC Thinkpad X230 Ubuntu 20.04 上将 Python 3.8 设置为默认设置

我尝试设置别名

gt@gt-ThinkPad-X230:~$ alias python='usr/bin/python3.8'

问:这会改变 .bashrc 文件吗?如果会,是哪个?~/.bashrc?另一个?如果会,是哪个?

gt@gt-ThinkPad-X230:~$ python --version
bash: usr/bin/python3.8: No such file or directory

抱怨找不到 /usr/bin/python3.8,但是:

gt@gt-ThinkPad-X230:~$ ls /usr/bin/python*

/usr/bin/python /usr/bin/python3.8 /usr/bin/python3-pasteurize /usr/bin/python2 /usr/bin/python3.8-config /usr/bin/python3-unidiff /usr/bin/python2.7 /usr/bin/python3-config /usr/bin/python3 /usr/bin/python3-futurize

我如何让 bash 找到 /usr/bin/python3.8?

答案1

正确的方法是sudo apt install python-is-python3- 它有效地建立了一个符号链接,但它也与未来的更新保持同步;所以如果你的 ubuntu 发行版移动到 Python 3.9,手动符号链接将不再起作用,但包确保它仍然有效。

答案2

首先回答你的问题,你的方法应该有效,我认为你在别名中给出的路径需要/前面的路径,所以命令应该是:

alias python='/usr/bin/python3.8'

~/.bashrc假设您正在使用 bash,这确实需要进入您的文件。

其次,Ubuntu 有一个非常好的方法来全局设置默认二进制文件,而不是像这里描述的那样弄乱点配置文件:更新替代方案,因此更好的解决方案可能是简单地运行:

sudo update-alternatives --set python /usr/bin/python3.8

这将确保您在任何地方都可以使用您想要的 Python 版本。

答案3

检查已安装的 Python 版本:

ls /usr/bin/python*

然后,创建替代方案:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 2

然后,选择您想要的版本:

sudo update-alternatives --config python

您可以轻松地在默认 Python 版本之间切换。

答案4

以下是我希望区分使用python-is-python3更新替代方案不同答案中描述的选项。起初,我认为使用这两个选项都可以得到最佳解决方案,但经过短暂的测试后,我意识到我遇到了问题。

我在用Ubuntu 20.04.6 LTS(焦点窝),在 Windows 10 上的 Windows Subsystem for Linux(WSL)下运行。

我的第一个观察是,我没有python2根本没有安装;我确实有python3.8,作为此发行版的默认“系统” Python 3 包提供。我注意到该python命令不起作用:

$ python --version

Command 'python' not found, did you mean:

  command 'python3' from deb python3
  command 'python' from deb python-is-python3

我通过安装解决了这个问题python-is-python3,它将在中创建符号链接/usr/bin/

$ ls -l /usr/bin/python*
lrwxrwxrwx 1 root root       7 Apr 15  2020 /usr/bin/python -> python3
lrwxrwxrwx 1 root root       9 Mar 13  2020 /usr/bin/python3 -> python3.8

这可能就足够了,但是我已经安装了多个版本的 Python 3......原因。我希望能够在 Python 3 的不同版本之间进行选择,因此更新替代方案包很有用:

$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 8
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 10

这样做的效果是(1)python3.10在我的系统中使其成为默认版本,因为它具有最高优先级 - 末尾的数字 - 并且(2)允许我通过以下方式切换系统范围的 python 版本:

$ 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.10   10        auto mode
  1            /usr/bin/python3.10   10        manual mode
  2            /usr/bin/python3.8    8         manual mode

请注意,这是使用 python3作为命令/别名。


注意:我不建议使用更新替代方案经常在项目的不同默认 Python 3.x 版本之间切换。最好在每个项目中使用虚拟环境,使用显式版本的 Python 安装,例如

$ python3.8 -m venv .venv

更新

自从使用上面描述的方法后,我发现了一个问题:当尝试使用等升级我的 disto 时apt-get update,我发现了如下问题ModuleNotFoundError:没有名为“apt_pkg”的模块

原因是我将的默认版本更改为python3python3.10这与 Ubuntu 20.04 中的许多系统脚本不兼容,这是意料之中的python3.8

因此我有恢复我的默认设置python3.8明确用于python3.10为我的项目创建 venvs。

相关内容