【问题标题】:How to set default Python version without --update-alternatives如何在没有 --update-alternatives 的情况下设置默认 Python 版本
【发布时间】:2021-11-14 21:06:16
【问题描述】:

我在 Ubuntu 18.04 上安装了 Python3.6 和 Python3.8。当我执行 python3 -V 时,我得到了 python3.8.0,这是正确的。这是我目前的默认 Python。

我在安装 Python3.6 和 Python3.8 时使用了 Ubuntu 18.04 软件包存储库。我刚刚从源代码构建了 Python3.10,现在我想将其设置为默认值。规范的更改方式是使用--update-alternatives,但是我在安装Python3.6和Python3.8时并没有这样做,所以当我执行时:

update-alternatives --query python
update-alternatives: error: no alternatives for python

Python3.8 在 /usr/bin/python3.8,Python3.10 在 /usr/local/bin/python3.10。

根据我在网上看到的,我应该这样做:

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

然后我使用 sudo update-alternatives --config python 选择默认值。

因为我目前没有任何替代方案,但我能够以某种方式从 Python3.6 切换到 Python3.8(我不记得如何),所以上面的命令会导致任何问题吗? 3.8 (/usr/bin/) 与 3.10 (/usr/local/bin/) 的不同位置是否存在问题,以及 3.10 的符号链接进入 /usr/local/bin/ 会产生什么影响已经找到了。

当然,我可以尝试一下,但如果出现问题,我不知道如果出错了如何退出。我在网上得到了很多不同的信息。

感谢您的帮助。

【问题讨论】:

  • update-alternatives 主要用于发行版提供的软件包。对于本地安装的东西,尝试在/usr/local/bin 中添加一些额外的符号链接,并确保它在$PATH 中更早
  • 请注意,还有像 pydocpip 这样的工具需要担心。出于这个原因,我建议养成始终使用pythonX.Y -m pip 的习惯,但是如果您正在执行 /usr/local 安装,您可以根据需要添加额外的符号链接。

标签: python python-3.x linux


【解决方案1】:

我已经回答了我自己的问题。首先,我确实有替代方案,但由于 Ubuntu 默认使用 Python2(请 Ubuntu 更改它——世界已经在前进),命令是 sudo update-alternatives --config python3:

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

注意“提供 /usr/bin/python3”这一行。这意味着 Python 3 的 Python 符号链接位于 /usr/bin/python3 中。所以我添加了新的:

sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.10 3

这使得 Python 3.10 优先级为 3,即最高优先级。那么:

$ python3 --version
Python 3.10.0   

我希望这对将来的某人有所帮助。

【讨论】:

  • 为什么pyenv 在这里不是好的解决方案?是因为您从某些脚本或某事加载默认 python 吗? -- 但无论如何你都可以轻松调用 pyenv init。
猜你喜欢
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 2012-03-10
  • 2014-10-08
  • 2016-04-29
  • 1970-01-01
相关资源
最近更新 更多